problem with usbtmc-communication

wrw at mac.com wrw at mac.com
Mon Dec 10 10:34:32 EST 2012


On Dec 10, 2012, at 8:31 AM, Jean Dubois <jeandubois314 at gmail.com> wrote:

[byte]

> As you can see this approach suffers from the same "buffer problem" as
> the approach with readline did. One now good argue as a workaround:
> get rid of the first data pair and add an extra measure command for
> the missing data pair, however this still does not explain why this
> problem is there in Python and not in Octave and I also fear I'll get
> more trouble when sending combined commands e.g. such as that to
> create a staircase current
> So my question is, how to modify the Python-code such that the first
> data pair is indeed the first data pair
> 
> thanks,
> jean
> 
> Here follows the new code:
> #!/usr/bin/python
> import time
> import os
> import sys
> measurementcurr=''
> measurementvolt=''
> timesleepdefault=5
> print "Enter a numofchar (11 =<numchar =<4095):",
> numofchar = int(raw_input())
> filename ='mydata.txt'
> usbkeith = open('/dev/usbtmc1','r+')
> usbkeith.flush()
> usbkeith.write("*IDN?\n")

It seems like a real leap of faith to be opening /dev/usbtmc1 as though it were a file-oriented device.  I've never heard of ANY instrument interface implemented this way.
Where did you see example code that did that.  Have you tried to access /dev/usbtmc1 as though it were a serial device?

> #strip blank line:
> identification=usbkeith.readline().strip()
> print 'Found device: ',identification
> usbkeith.write("SYST:REM" + "\n")
> usbkeith.write(":SENS:VOLT:PROT 1.5\n")
> keithdata = open(filename,'w')
> usbkeith.write(":OUTP:STAT ON\n")
> for number, current_in in enumerate(('0.025', '0.050', '0.075',
> '0.100'), 1):
>   usbkeith.write(":SOUR:CURR %s\n" % current_in)
>   time.sleep(timesleepdefault)
>   usbkeith.write(":MEAS:CURR?\n")
>   measurementcurr=usbkeith.read(numofchar)
>   print 'Measured current %d: ' % number, measurementcurr
>   usbkeith.write(":MEAS:VOLT?\n")
>   measurementvolt=usbkeith.read(numofchar)
>   print 'Measured voltage %d: ' % number, measurementvolt
>   keithdata.write(measurementcurr.strip()+' '+measurementvolt)
> usbkeith.write(":OUTP:STAT OFF\n")
> print "Goodbye, data logged in file:"
> print filename
> usbkeith.close()
> keithdata.close()
> -- 
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list