4

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 経由で寄付したいと思っています。前もって感謝します。

編集:バーコードから正しいデータを取得し、それを読み取り可能な文字列形式に変換するにはどうすればよいですか?

4

3 に答える 3

0

下記のgitからpyusbをインストールしてみることができます

https://github.com/walac/pyusb#installing-pyusb-on-gnulinux-systems

上記のプログラムは、 device.read() の引数を減らすだけで機能しました

data = device.read(x.bEndpointAddress, x.wMaxPacketSize, 0, 1000) を data = device.read(x.bEndpointAddress, x.wMaxPacketSize) に置き換えます。

于 2015-09-10T14:45:03.120 に答える
0

USB ペイロードからのテキスト データの抽出は、ベンダー固有です。それほど複雑ではありませんが、自分でそれを理解する必要があります。

発生する例外については、デバッグ ログを有効にして、スクリプトを再度実行し、コンテンツを に投稿してくださいpyusb.log

デバッグを有効にするには、何が問題なのですか?で説明されているように、いくつかの環境変数を設定します。チュートリアルのセクション。

Linux/Mac の場合:

$ export PYUSB_DEBUG_LEVEL=debug
$ export PYUSB_LOG_FILENAME=pyusb.log

Windows の場合:

> set PYUSB_DEBUG_LEVEL=debug
> set PYUSB_LOG_FILENAME=pyusb.log
于 2012-08-16T00:59:32.283 に答える
0

デバッグを取得できない理由は、環境変数が PYUSB_DEBUG_LEVEL ではなく PYUSB_DEBUG であるためです。

これを試して:

export PYUSB_DEBUG=debug
export PYUSB_LOG_FILENAME=pyusb.log

python yourscript.py

nano pyusb.log
于 2014-07-07T08:54:49.087 に答える