ブログ

Armadillo-X1/IoT(G3/G3L):ハンディバーコードリーダ(GFS4400/QD2131/TD1100)のデータをUSB経由で取得

at_kazutaka.bito
2017年12月7日 12時02分

Armadillo-X1/IoT(G3/G3L)で、ハンディバーコードリーダ
 GFS4400
 QD2131
 TD1100
のデータをUSB経由で取得してみました。

写真左:GFS4400
写真中:QD2131
写真右:TD1100

以下の確認において、Armadillo-X1とQD2131の組み合わせで使用していますが、 以下の範囲では、ハンディバーコードリーダの機種による手順の差異はありません。

1.Armadillo-X1/IoT(G3/G3L)とハンディバーコードリーダを接続

Armadillo-X1/IoT(G3/G3L)のUSBコネクタにハンディバーコードリーダを接続すると、 下記ログのようにUSBキーボードとして認識されます。

usb 1-1: new full-speed USB device number 9 using ci_hdrc
input: Datalogic ADC, Inc. Handheld Barcode Scanner as /devices/soc/30800000.aips-bus/30b10000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/0003:05F9:2216.0008/input/input9
hid-generic 0003:05F9:2216.0008: input: USB HID v1.10 Keyboard [Datalogic ADC, Inc. Handheld Barcode Scanner] on usb-ci_hdrc.0-1/input0

2.ハンディバーコードリーダからのデータ取得の確認

ハンディバーコードリーダのevent番号を調べます。

root@armadillo:~# cat /proc/bus/input/devices
(略)
I: Bus=0003 Vendor=05f9 Product=2216 Version=0110
N: Name="Datalogic ADC, Inc. Handheld Barcode Scanner"
P: Phys=usb-ci_hdrc.0-1/input0
S: Sysfs=/devices/soc/30800000.aips-bus/30b10000.usb/ci_hdrc.0/usb1/1-1/1-1:1.0/0003:05F9:2216.0007/input/input8
U: Uniq=S/N G17A26729
H: Handlers=sysrq kbd event2
B: PROP=0
B: EV=120013
B: KEY=10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: MSC=10

上記ログの場合、 H: Handlers=sysrq kbd event2 の箇所より、ハンディバーコードリーダのevent番号は"2"になっています。

ハンディバーコードリーダの情報は、"/dev/input/event"で確認できます。(は、上記で確認したevent番号。)
下記のようにevtestコマンドを実行した状態で、バーコードを読むと、バーコードの情報が表示されます。
(下記は、event番号が2の場合。)

root@armadillo:~# evtest /dev/input/event2

3.ハンディバーコードリーダからのデータ取得するサンプルプログラム

上記2の"evtest"コマンドの場合、キーボードのキー情報がそのまま表示されて扱りづらいので、キー情報を文字に置き換えるサンプルプログラム barscan.c を添付します。
補足)本サンプルでは、最大50文字で、キー情報は数字と英字のみを扱っています。
 (その他のキー情報は"*"で表示するようにしてます。)
 文字数の変更、記号、特殊キー等に対応する場合は、下記の箇所を変更してください。

#define BCODE_SIZE 50   // 文字数(本サンプルでは50文字)
#define KEYLIST_SIZE 59  // キー情報と文字の相関リストのサイズ(本サンプルは数字、英字を含む範囲に限定)
static unsigned char keylist[KEYLIST_SIZE] // キー情報と文字の相関リスト(後述に補足)
switch(event.code) // キー情報に対する処理(本サンプルはEnterキー時に検出時に標準出力)

3.1.ビルド方法

まず、ビルド環境をインストールします。(既にインストール済みの場合は不要)

root@armadillo:~# apt-get install build-essential

barscan.cをArmadillo-X1/IoT(G3/G3L)に置いて、ビルドします。

root@armadillo:~# gcc barscan.c -o barscan

barscanという実行ファイルが生成されます。

3.3.使い方

上記2で確認したevent番号の"/dev/input/event*"をリダイレクトで入力します。
(下記は、event番号が2の場合。)

root@armadillo:~# ./barscan < /dev/input/event2

実行後、ハンディバーコードリーダからデータ取得する毎にバーコードの情報を表示します。
(上述のとおり、文字数は50文字までで、数字と英字以外は、"*"で表示されます。)