python读取usb数据_PyUSB:从USB设备读取

本文介绍了使用PyUSB库在Windows 10环境下与USB示波器进行通讯的问题及解决方案。在尝试通过PyUSB发送命令到示波器时,设备出现了冻结和重启的情况。经过排查,发现设备制造商提供的文档存在错误,不正确的SCPI命令导致了问题。最终,通过修正命令格式和获取数据的方法,成功实现了与示波器的数据交换。
摘要由CSDN通过智能技术生成

这是一个更新和缩短的问题。

通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值