如何与USB设备使用PyUSB
问题描述:
我迄今为止得到寻找设备的阶段进行互动,现在我准备跟使用页面上的specification中规定的设备协议的USB 22如何与USB设备使用PyUSB
libusb安装在我的机器上,PyUSB也是如此。
import usb.core
import usb.util
# find our device
dev = usb.core.find(idVendor=0x067b, idProduct=0x2303)
# was it found?
if dev is None:
raise ValueError('Device not found')
# b are bytes, w are words
reqType = ''
bReq = ''
wVal = ''
wIndex = ''
dev.ctrl_transfer(reqType, bReq, wVal, wIndex, [])
上面的例子试图使用控制转移,我认为这是控制转移,这是协议所描述的。
我只想知道我是否沿着正确的路线走,或者我是否做了根本性错误的事情。
该设备被发现,它只是我不确定的下一部分。
答
存在https://github.com/walac/pyusb/blob/master/docs/tutorial.rst章跟我说话,蜂蜜
>>> msg = 'test'
>>> assert dev.ctrl_transfer(0x40, CTRL_LOOPBACK_WRITE, 0, 0, msg) == len(msg)
>>> ret = dev.ctrl_transfer(0xC0, CTRL_LOOPBACK_READ, 0, 0, len(msg))
>>> sret = ''.join([chr(x) for x in ret])
>>> assert sret == msg
如果你想写入端点(批量传输等),你必须服从USB树结构
一个例子:-> configuration -> claim interface -> get endpoint
...
在22页的规范是不是USB协议是GNET协议(我不知道)。问题是您不需要低级USB与设备通话。你可以在linux上使用标准的tty程序(echo
,screen
,putty
,socat
,...)或者在windows下模拟一些东西
+0
我设法通过PuTTY连接到我的设备的COM端口,但它没有给我反馈(黑屏),甚至如果我输入并盲目输入命令,例如'STX,N,CR',我应该问另一个问题。 –
为什么不试试呢? – frankyjuang
我真的不知道从哪里开始设置'reqType','bReq'等 –