请不要将其称为副本,我对通过Python访问USB设备的想法完全不了解。
其他问题和答案往往太高,我无法理解。
我有一个USB即插即用的qr代码扫描程序。
无论出于何种原因我无法在命令行中找到它并且让我感到难过。
当扫描程序扫描QR代码时,我希望将其数据发送到我的python脚本,以便将其设置为变量以与数据库进行比较。
我不了解如何访问USB设备并使用Python检索信息。
我已经阅读了很多相关内容但仍然没有。
有什么简单的方法吗?
答案 0 :(得分:0)
我没有使用特殊设备作为连接到计算机的QR阅读器,但我所做的是使用网络摄像头提供图像数据,随后由名为zbar的工具处理以扫描条形码(在我的案例是isbn的书籍数量)然后调用浏览器来查找有关该书的信息。
所以在我看来,你也可以这样做。
我的代码如下所示:
import os
p=os.popen('/usr/bin/zbarcam /dev/video1', 'r')
while True:
code = p.readline()
print 'Got barcode:', code
isbn = code.split(':')[1]
os.system('google-chrome http://www.goodreads.com/search/search?q=%s'%isbn)
因此,通用方法是为您的系统找到一个工具,为您提供必要的支持以使用您的设备(可能http://zbar.sourceforge.net/是一个很好的起点)。如果您能够在命令行上调用它,则可以使用os.popen()或更好的subprocess.popen()来调用命令行工具,并根据需要进一步处理数据。
HTH
答案 1 :(得分:0)
QR扫描仪是USB HID(人机接口设备 - http://www.usb.org/developers/hidpage)设备或更少实现虚拟COM端口(USB CDC ACM设备类)
对于相关的HID QR扫描仪是http://www.usb.org/developers/hidpage/pos1_02.pdf
USB HID POS设备在 HID报告中发送数据(即扫描的QR码)这些报告的结构由USB标准在 HID报告描述符中给出,对于QR和条形码扫描仪,请参阅http://www.usb.org/developers/hidpage/pos1_02.pdf第37,38页:Scanned Data Report
,Raw Scanned Data Report
当设备发送包含数据的 HID报告时,驱动程序会触发OS 事件。这些事件由您必须实现的事件处理程序捕获:
添加事件处理程序
条码扫描器应用程序使用两个重要的事件处理程序,
DataReceived
和ReleaseDeviceRequested
。当设备扫描条形码时发生
DataReceived
事件 允许您的应用接收和处理扫描数据。它的args 参数包含BarcodeScannerReport
,而pywinusb
又包含 从扫描中获得的数据。
来源: https://msdn.microsoft.com/en-us/library/dn792060%28v=winembedded.81%29.aspx (将此转换为python)
处理您可以使用的{HID窗口事件{/ 1}}
使用pywinusb.hid
查看./examples目录中的一些(好的,现在很少)脚本。 例如,这些显示了如何使用pywinusb.hid来处理事件 来自HID类设备使用事件。
来源:https://pypi.python.org/pypi/pywinusb/
也许也是有用的链接:
http://www.beyondlogic.org/usbnutshell/usb1.shtml
http://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/
http://ww1.microchip.com/downloads/en/AppNotes/01144a.pdf
PyUSB send HID report(https://pypi.python.org/pypi/pywinusb/)