USB バーコード リーダー (生データ モード) を使用してバーコード データを読み取る必要があります。キーボードモードでリーダーを設定できることはすでに知っていますが、4つのリーダーを同時に使用するとテキストが重なるため、私の要件には合いません。
私はpythonが初めてで、自分で調べてみましたが役に立ちませんでした。ドキュメントを通じてこれらのアイデアを得ましたが、何が問題なのか本当にわかりません。
これまでに私が思いついたサンプルコードは次のとおりです。
import sys
import usb.core
import usb.util
# got these using the command lsusb -vv
VENDOR_ID = 0x4b4
PRODUCT_ID = 0x100
DATA_SIZE = 1
device = usb.core.find(idVendor=VENDOR_ID, idProduct=PRODUCT_ID)
if device is None:
sys.exit("Could not find Id System Barcode Reader.")
if device.is_kernel_driver_active(0):
try:
device.detach_kernel_driver(0)
except usb.core.USBError as e:
sys.exit("Could not detatch kernel driver: %s" % str(e))
#not really sure if these are correct configuration.
try:
cfg = device.get_active_configuration()
for i in cfg:
for x in i:
x = x
device.set_configuration()
except usb.core.USBError as e:
sys.exit("Could not set configuration: %s" % str(e))
data = []
swiped = False
#i can't print the data when i try to read a barcode
data = device.read(x.bEndpointAddress, x.wMaxPacketSize, 0, 10000)
print data
これを実行してバーコードを試した後、このエラーが発生します。
Traceback (most recent call last):
File "barcodesensor.py", line 37, in <module>
data = device.read(x.bEndpointAddress, x.wMaxPacketSize, 0, 10000)
File "/usr/local/lib/python2.6/dist-packages/usb/core.py", line 654, in read
self.__get_timeout(timeout)
File "/usr/local/lib/python2.6/dist-packages/usb/backend/libusb10.py", line 559, in intr_read
timeout)
File "/usr/local/lib/python2.6/dist-packages/usb/backend/libusb10.py", line 641, in __read
timeout))
File "/usr/local/lib/python2.6/dist-packages/usb/backend/libusb10.py", line 403, in _check
raise USBError(_str_error[ret], ret, _libusb_errno[ret])
usb.core.USBError: [Errno 110] Operation timed out.
生データを取得し、フォーマットを文字列に変換するのを手伝ってくれる人に、PayPal 経由で寄付したいと思っています。前もって感謝します。
編集:バーコードから正しいデータを取得し、それを読み取り可能な文字列形式に変換するにはどうすればよいですか?