在Windows 10中无法使用PyUSB从USB读取信息。(连接正常)

时间:2018-09-20 17:57:37

标签: windows python-3.x barcode-scanner libusb pyusb

我正在Windows 10机器中使用Anaconda运行Python 3。

我试图连接到USB条形码扫描仪,以便读取条形码并将其存储在其他python例程中的变量中。我找到了一个使用PyUSB库的示例并尝试了它。进行一些修改后,我可以运行它而不会引发错误。该程序使用以下代码连接到USB:

import usb.core
import usb.util

def main():
    # Find usb device
    dev = usb.core.find(idVendor=0x05E0, idProduct=0x1200)

    # Raise error if device not found
    if dev is None:
        raise ValueError('Device not found')

    else:
        # Set configuration of device
        dev.set_configuration()

        endpoint = dev[0][(0,0)][0]

        data = None

        while True:
            try:
                dev.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize, timeout=1) 
                print(data)

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

if __name__ == '__main__':
    main()

正如我所说,程序可以正确运行并找到USB。尽管如此,由于程序似乎卡在了以下行中,因此数据(条形码编号)从未被打印

dev.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize, timeout=1) 

你能帮我吗?

非常感谢您!

1 个答案:

答案 0 :(得分:0)

使用PyUSB读取条形码太复杂了。
建议通过以下方式设置COM端口模式并与PySerial通信。

从此页面下载设备驱动程序。
USB CDC DRIVER FOR WINDOWS

按照本页中所述的步骤和设置条形码,将扫描仪设置为COM端口模式。
EMULATING A COM/SERIAL PORT OVER USB USING CDC DRIVER

将本手册第80至82页所述的扫描仪硬件/软件握手设置均设置为
LS1203 Product Reference Guide - Zebra Technologies

使用PySerial打开并读取分配给扫描仪的COM端口。

如果使用扫描仪扫描条形码,则应该能够从COM端口读取条形码数据。

只要电源打开,此扫描仪即已准备就绪,可以读取条形码。
阅读的启用/禁用功能似乎未发布。


根据结果报告的注释,考虑以下选项。

  • 询问Zebra的服务台是否可行。
  • 放弃Python中的控件,并在键盘输入仿真模式下使用它。
  • 放弃USB连接并使用RS232C连接电缆。