pywinusb是一个python用usb hid模式通信的模块,安装和下载方法这里不说
在使用这个模块进行usb通信的时候,发送和接收数据需要注意一点:
在定义的发送数据的端点使用的是0的时候,发送数据的列表的 第一个元素必须为0,因此列表的长度实际就为65,
端点0 即在write函数中表象为report[0]:,如果使用的是usb的其他端点,相对应的report[0]改为其他的端点标识,usb通信的端点有8个,0-7, 0端点在从设备上是用来的进行枚举过程的
def write(self,sendlist):
if self.report:
self.report[0].set_raw_data(sendlist) #这个函数在模块内部有注明
byte_num = self.report[0].send()
def send_data(self):
buf = [0x05, 0xfa, 0x01]
myhid = usbmian.hiddevice(0x0483, 0x5750)
myhid.start()
myhid.setfilecallback()
send_list = [0x00 for i in range(65)]
for j in range(8):
send_list.pop(j + 1)
send_list.insert(1, 0xaa) # 传进去的列表第一个位置的元素是report_id,由于里面用的是0,所以第一个位置为0,不能改为其他
send_list.insert(2, 0xaa)
send_list.insert(3, 0x05)
send_list.insert(4, 0xfa)
send_list.insert(5, 0x01)
# send_list.insert(6, 0x01)
send_list.insert(6, (self.crc16(buf, 3) & 0xff))
send_list.insert(7, ((self.crc16(buf, 3) >> 8) & 0xff))
send_list.insert(8, 0x55)
myhid.write(send_list)
self.textEdit.setText(str(send_list))
time.sleep(0.5)
至于使用上可以参考jakey.chen大神的分享。