如何与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, []) 

上面的例子试图使用控制转移,我认为这是控制转移,这是协议所描述的。

我只想知道我是否沿着正确的路线走,或者我是否做了根本性错误的事情。

该设备被发现,它只是我不确定的下一部分。

+0

为什么不试试呢? – frankyjuang

+0

我真的不知道从哪里开始设置'reqType','bReq'等 –

存在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',我应该问另一个问题。 –