s.tanimura-san…
2017年6月8日 16時25分
お世話になります。
谷村と申します。
(C言語で簡単なプログラムを書いている程度で、linux等の知識等初心者です。)
Armadillo-420(kernel:2.6.26-at25)にUSBバーコードリーダを挿して、
バーコードの読取り情報を取得したいと考えています。
***USB Device Class drivers***
<*> USB Modem (CDC ACM) support
を有効にして、
CDC-ACMクラスデバイス(/dev/ttyACM0)として認識される所まではできたのですが、
プログラムから読取り情報を取得する所でつまづいております。
/dev/ttyACM0から読取り情報を取得する際のサンプル的なコード等ありませんでしょうか。
その他、make menuconfigで設定を変更する必要がある箇所等ありますでしょうか。
どうかご教示の程、宜しくお願い致します。
コメント
s.tanimura-san…
補足です。
cat /proc/bus/usb/devices の表示結果
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=05f9 ProdID=4204 Rev= 0.81
S: Manufacturer=**********
S: Product=Handheld Barcode Scanner
S: SerialNumber=S/N **********
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=400mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
dmesgの表示結果
usb 2-1: new full speed USB device using fsl-ehci and address 11
usb 2-1: configuration #1 chosen from 1 choice
cdc_acm 2-1:1.0: ttyACM0: USB ACM device
以上です。
at_hanada
花田です。
> P: Vendor=05f9 ProdID=4204 Rev= 0.81
> S: Product=Handheld Barcode Scanner
まったく同じかどうかは見てみないとわからないでしょうが、同Vendor製品での一例です。
Datalogic Barcode Scanner
https://www.acmesystems.it/foxg20_barcode
s.tanimura-san…
早速のご回答ありがとうございます。
USB-COMとUSBキーボードの切替が可能なタイプで、
デフォルトがUSB-COMです。
> [armadillo]# tip -l /dev/ttyACM0 -s 9600
> ※ 9600はボーレート設定値です。バーコードリーダーの仕様書などに書いている値を適宜入力してください。
> で、ttyACM0を開いた状態にして、バーコードをスキャンしたら
> 何か文字列が表示されたりするでしょうか?
スキャンすると、文字列表示されました。
root@armadillo420-0 (ttymxc1) /dev]# tip -l /dev/ttyACM0 -s 9600
Connected.
*********** ←(読み取ったバーコード情報)
> 表示されるなら、普通のシリアルポートとして使えますので、
> 読み出すプログラムを作るのでれあれば、
> 実践開発ガイドの、シリアルポートのサンプルコードが参考になるかと思います。
サンプルコードですが、open()時の引数では/dev/ttyAMC0を指定し、
またバーコード読込では、非カノニカルモードを選択した方がよいでしょうか?
また初歩的ですみませんが、
set_sig_handler(terminate_sig_list, ARRAY_SIZE(terminate_sig_list), terminate_sig_handler);
はどういった処理をしているのでしょうか?
以上、宜しくお願い致します。
at_koseki
古関です。
> サンプルコードですが、open()時の引数では/dev/ttyAMC0を指定し、
試してみてください。
> またバーコード読込では、非カノニカルモードを選択した方がよいでしょうか?
改行単位でデータを取り込みたいのであれば有効に、
そうでなければ無効にすれば良いと思います。
> set_sig_handler(terminate_sig_list, ARRAY_SIZE(terminate_sig_list), terminate_sig_handler);
開発ガイドのサンプルコードのすぐ下に説明があるので読んでみてください。
s.tanimura-san…
at_koseki
2017年6月8日 17時14分
古関です。
もし、差し支えなければ教えていただきたいのですが、
USBバーコードリーダーの型番は何でしょうか?
USB HIDクラスでキーボードに見えるものもあるのですが、
今回は、CDC-ACMということで普通のシリアルに見えるタイプということですかね。
[armadillo]# tip -l /dev/ttyACM0 -s 9600
※ 9600はボーレート設定値です。バーコードリーダーの仕様書などに書いている値を適宜入力してください。
で、ttyACM0を開いた状態にして、バーコードをスキャンしたら
何か文字列が表示されたりするでしょうか?
※ tipを終了させるには~(チルダ)に続いて.(ドット)を入力してください。
入力した、 ~(チルダ)、.(ドット)はコンソールに表示されません。
表示されるなら、普通のシリアルポートとして使えますので、
読み出すプログラムを作るのでれあれば、
実践開発ガイドの、シリアルポートのサンプルコードが参考になるかと思います。
http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-3…