到目前为止,我已经到了寻找设备的阶段,现在我已准备好使用第22页specification中列出的设备协议与USB通信。
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, [])
上面的例子试图使用控制传输,我假设是协议描述的。
我只是想知道我是否沿着正确的路线走,或者我是否做了一些根本错误的事情。
找到设备,它只是我不确定的下一部分。
答案 0 :(得分:2)
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
...
不是USB协议是GNET协议(我不知道)。关键是您不需要低级USB与设备通信。您可以在linux上使用标准tty程序(echo
,screen
,putty
,socat
,...)或在Windows中使用类似的东西