我正在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)
你能帮我吗?
非常感谢您!
答案 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端口读取条形码数据。
只要电源打开,此扫描仪即已准备就绪,可以读取条形码。
阅读的启用/禁用功能似乎未发布。
根据结果报告的注释,考虑以下选项。