2018年03月26日

中国製据え置きQRコードスキャナの設定用バーコードを生成してみた記録

中国製据え置きQRコードスキャナのSymcode MJ7580 2D Image Desktop Scannerの設定用バーコードをPC上で生成しようとして悪戦苦闘した記録。

まず、英語版説明書に記載の数字や、日本語版説明書のDatamatrixのデータを元にバーコードを作っても、設定用の音(ピコッ)ではなく、読み取り音(ピッ)が鳴って、単に数値として読み取られてしまう。
なぜかというと、バーコードにバイナリデータが含まれているためだ。

CODE128には、アスキーコードの他にFUNC1,2,3,4という拡張コードが含まれる。
まず普通の読み取り装置ではここは無視されてしまうし、使わない。

ので、AndroidアプリでZxingを使い、生データを読み取った。
結果、次のような並びになっていることがわかった。

例えば改行コード(CR+LF)を付けるバーコードの場合
[FUNC3]090300[.]

で、これがわかったなら次にCODE128を生成するのだが、FUNCを付け加えられるサイトがほぼ無い。

最終的にCODE128の生成にはPythonのcode128 0.3ライブラリに付属しているcode128.exeを利用した。
https://pypi.python.org/pypi/code128/0.3

ソースコードを読んだところ~がFUNCに相当するらしく、以下のコマンドで上記のバーコードが生成できた。
code128 ~3090300. output.svg

なお、Datamatrixの中身と、CODE128の中身は同じ為、どちらかに統一して良い。
おわり。

キーエンスのCODE128解説
https://www.keyence.co.jp/ss/products/autoid/codereader/basic_code128.jsp

以下に私好みの設定バーコードを示す。(クリックで拡大)
setup.png

なお、
通常・高速切替モードは、上のボタンで青色のとき1D・2D読み取り、緑色のとき1D専用モードになる。
抑止・通常切替モードは、上のボタンが青色のときスリープ状態になり、緑色のとき1D・2Dを読み取る。
デフォルトだと使わないときにライトがついたり消えたりするが、後者に設定するとオフにできて便利。

以下によく使いそうなバーコードを列挙しておく。(クリックで拡大)
list.png
posted by gpsnmeajp at 03:45| Comment(4) | TrackBack(0) | トラブル解決
この記事へのコメント
私は、八王子市の教育委員会所属の研究主事、齋藤秀昭と申します。
本市では、QRコードを使った勤怠管理を行うため、今、様々なQRコードリーダーを購入して、
動作確認を行っています。
先日、SymcodeのMJ8200というコードリーダーを購入しました。
認証がスピーディでこれはいけると思ったのですが、どうしても日本語を読み取ってくれません。
縷々試行錯誤している時、このページに出会いました。
キーボード言語を日本語にに設定して、USB−COM(USBシリアルモード)に設定しようとすると、
スキャナーが止まってしまいます。
どうすれば、USBシリアルモードに変更することができるのか、ご教示ください。
説明書に載っているメーカーのアドレスに問い合わせても、なかなか伝わりません。
助けてください。
よろしくお願いいたします。
Posted by 齋藤秀昭 at 2018年08月28日 15:28
齋藤様
コメントありがとうございます。

最後に使ったのがだいぶ前ですので記憶が定かではないのですが、自分の書いた文を見返す限り、
一旦USBシリアルモードに切り替わると、正しいボーレートでシリアルポートがオープンされていないとそもそも読み取り動作が行われなかった記憶があります。
http://gpsnmeajp.sblo.jp/article/182797518.html

Teratermなどで開き、設定が115200bps、8bit、1bit、ノンパリティになっていることをご確認ください。
※速度は機種によって変わる可能性があります。
※ちなみにUSBシリアルモードでは、キーボード言語設定は意味がないので設定不要です。キー配列設定ですので
Posted by gpsnmeajp at 2018年08月28日 23:41
ご丁寧な説明をありがとうございます。
ご助言に従って、まずTeratermのインストールを試みたのですが、
【Teraterm:新しい接続】
の画面で、シリアル(E)ポート(R)にCOM1などの表示が出ません。
そのまま、OKをクリックすると、しばらく「接続中」の表示が出て、
数分後に
【SSH認証】
の画面が出てくるのですが、ユーザー名とパスワードを入力して
OKをクリックすると、
「SSHパケット送信中に通信エラーが発生しました。
 切断します。(retry_send_packet:10057)」
の表示が出ます。
たびたび申し訳ありませんが、解決方法をご教示ください。
Posted by 齋藤秀昭 at 2018年08月30日 09:43
恐らくですが、その症状ですと、そもそもQRコードリーダーがUSBシリアル機器として認識されていないように見えます。
USBシリアルモードに切り替えた後、デバイスマネージャなどで確認してみてください。
場合によってはUSBケーブルを抜き差しするなどしてみてください。
(そもそもお使いのリーダー自体にUSBシリアルモードが搭載されていない可能性もあります)

なお、日本語のQRコードを確実に読み取りたい場合は(値段は張りますが)デンソーのQRコードリーダーを使う方法もあり、こちらだと苦労なく扱えるかと思います。
Posted by gpsnmeajp at 2018年08月30日 22:33
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/182801384
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック