Python pyUSB从传感器获取连续的数据流

Python pyUSB从传感器获取连续的数据流,python,usb,Python,Usb,我有一个通过usb连接的设备,我用pyUSB和数据接口 这就是我的代码当前的样子: import usb.core import usb.util def main(): device = usb.core.find(idVendor=0x072F, idProduct=0x2200) # use the first/default configuration device.set_configuration() # first endpoint e

我有一个通过usb连接的设备,我用pyUSB和数据接口

这就是我的代码当前的样子:

import usb.core
import usb.util

def main():
    device = usb.core.find(idVendor=0x072F, idProduct=0x2200)

    # use the first/default configuration
    device.set_configuration()

    # first endpoint
    endpoint = device[0][(0,0)][0]

    # read a data packet
    data = None
    while True:
        try:
            data = device.read(endpoint.bEndpointAddress,
                               endpoint.wMaxPacketSize)
            print data

        except usb.core.USBError as e:
            data = None
            if e.args == ('Operation timed out',):

                continue

if __name__ == '__main__':
  main()
它基于鼠标阅读器,但我得到的数据对我来说没有意义:

array('B', [80, 3])
array('B', [80, 2])
array('B', [80, 3])
array('B', [80, 2])

我的猜测是,它只读取了实际提供的内容的一部分?我试过把maxpacketsize调大一点,但是没有

pyUSB以字符串格式发送和接收数据。您正在接收的数据是ASCII码。您需要添加以下行以正确读取代码中的数据

data = device.read(endpoint.bEndpointAddress,
                           endpoint.wMaxPacketSize)

RxData = ''.join([chr(x) for x in data])
print RxData

函数
chr(x)
将ASCII码转换为字符串。这应该可以解决您的问题。

我只是一个偶尔使用Python的用户,所以要小心。如果您的python脚本无法跟上采样的数据量,那么这对我来说是可行的。我正在从uC向PC发送64字节的数据块。我使用缓冲区保存样本,然后将它们保存在文件中或打印出来。我将数字乘以64(在下面的示例中为10),直到收到预期的所有样本

# Initialization
rxBytes = array.array('B', [0]) * (64 * 10)
rxBuffer = array.array('B')
在一个循环中,我获取新样本并将它们存储在缓冲区中

# Get new samples
hid_dev.read(endpoint.bEndpointAddress, rxBytes)
rxBuffer.extend(rxBytes)
希望这有帮助