这是一个更新和缩短的问题。
通过PyUSB与USB设备进行通讯应该很容易。因此,我试图在Win10下使用PyUSB从USB设备(示波器)读取数据。显然,由于找到了设备,因此USB驱动程序(libusb-win32 v1.2.6.0)正确安装了,并且我得到了一些响应print(dev)(请参见下文)。从中我可以看到输出端点地址是0x3和输入端点地址是0x81
根据示波器手册,我应该发送:SDSLSCPI#到设备以将其设置为SCPI模式,并应获得响应“:SCPION”。但是,:SDSLSCPI#以可复制的方式发送示波器的监视器时,将冻结并重新启动。
如果我发送,*IDN?我应该得到答复,P1337,1842237,V2.4.0->。但仅当设备已经处于SCPI模式时。显然不是,并且我收到超时错误(请参见下文)。
那么,我在这里做错了什么?我在PyUSB教程中缺少什么信息。我使用的是错误的PyUSB命令/参数,还是缺少其他驱动程序,还是关于Win10或设备硬件?感谢您提供有关如何找出问题所在的提示。
顺便说一句,第二个值是dev.read(0x81,7)多少?读取的字节数?好吧,通常我不知道设备将发送多少字节。我期待命令在超时时间内读取直到换行或其他终止符。在哪里可以找到有关PyUSB的“万无一失”的文档,教程和示例?
码:
importusb.coreimportusb.util
dev=usb.core.find(idVendor=0x5345,idProduct=0x1234)ifdevisNone:raiseValueError('Device is not found')# device is found :-)print(dev)dev.set_configuration()msg=':SDSLSCPI#'print("Write:",msg,dev.write(3,msg))print("Read:",dev.read(0x81,7))
来自的输出print(dev):
DEVICE ID5345:1234onBus000Address001=================bLength:0x12(18bytes)bDescriptorType:0x1DevicebcdUSB:0x200USB2