Hello everyone:
I wanted to share the code i wrote to communicate with a tektronix
scope MSO2024. I used [0] and [1] as reference. I'm using PyUSB,
libusb 1.0 and Fedora 16
I wrote to main functions. One for opening the scope:
def tekopen(idV=0x0699,idP=0x03A4):
dev=usbc.find(idVendor=idV,idProduct=idP)
if dev is None:
raise ValueError('No se encontro el osciloscopio')
if dev.is_kernel_driver_active(0):
dev.detach_kernel_driver(0)
dev.set_configuration()
usbt.claim_interface(dev,0)
return dev
idV and idP can be obtained connecting the scope and then using "lsusb"
The second function is for sending commands or queries to the scope:
def tekcq(dev,comd,oendp=0x01,iendp=0x82):
n=1
ncomp=n^0xFF
mlen=len(comd)
fiveb=np.divide(mlen,256)
fourb=np.mod(mlen,256)
abytes=''
if np.mod(mlen,4)!=0:
nabytes=4-np.mod(mlen+12,4)
for x in range(0,nabytes):
abytes+=struct.pack('1B',0)
header=struct.pack('12B',1,n,ncomp,0,fourb,fiveb,0,0,1,0,0,0)
msg=header+comd+abytes
if comd[-1]!='?':
dev.write(oendp,msg,0,100)
else:
n=2
ncomp=n^0xFF
inr=struct.pack('12B',2,n,ncomp,0,0,1,0,0,0,0,0,0)
dev.write(oendp,msg,0,100)
dev.write(oendp,inr,0,100)
if comd!=':curv?':
res=dev.read(iendp,256,0,1000)[12:]
res=res.tostring()
return res
else:
res=dev.read(iendp,512,0,1000)
fend=res[8]
res=res[12:]
data=np.array(res,dtype=np.uint8)
while fend!=1:
n+=1
ncomp=n^0xFF
inr=struct.pack('12B',2,n,ncomp,0,0,1,0,0,0,0,0,0)
dev.write(oendp,inr,0,100)
res=dev.read(iendp,512,0,1000)
fend=res[8]
res=res[12:]
data=np.hstack((data,res))
return data
If we want to send a command to scope we use:
tekcq(tek,':head off')
If we want to send a query:
a=tekcq(tek,':hor:sca?')
One special case is when we want to query waveform data from the
scope, in that case we use:
data=tekcq(tek,':curv?')
Hope is helpful for someone.
[0] http://comments.gmane.org/gmane.comp.python.pyusb.user/477
[1] http://www1.tek.com/forum/viewtopic.php?f=5&t=4389
--
Marcos Anzorena
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
pyusb-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pyusb-users