QRコードを読み取りたい – デンソーウェーブ製AT10使用

よくコンビニのレジで使用されているハンディスキャナ。
前から使ってみたかったのですが、入手することができたので行先ボードに反映してみます。
長期連休を利用して会社から許可をもらいました。

QRコードは僕の好きな技術の一つです。
どっかアメリカの会社がつくったやつでしょ?
と思ってたのですが国産でした。
もう少しアピールした方が良いんじゃないかな?

※「QRコード」はデンソーウェーブの登録商標(第4075066号)by Wikipedia です。

今回はQRコードの本家、デンソーウェーブ製のAT10を使用しています。
他にもハンディスキャナで有名なのはオムロンやキーエンスのものがあります。


今回、使用するのはATシリーズです。
AT10でもAT20でも動くことは確認しています。
AmazonのリンクはAT20。

動作イメージはこんな感じです。

製造系のアプリを開発するにあたってQRコードやバーコードの認識は重宝します。
キーエンスやオムロンもなかなか良いのですが、今回手に入ったのはデンソーウェーブ製のものでした。
できることなら全ブランドに対応したい・・・。

まぁ、ハンディスキャナマニアではないのでとりあえず無料の範囲で。


実装に関しては、ちょっとてこずるかなと思っていたのですが案外簡単でした。
最低限の読み取り処理ができるところまでを記載しています。
取説を読む限りでは結構色々できそうです。
LEDの色変えたり、ブザー音変えたり、連続読み取りしたり・・・。

AT10Q-SM - HM取扱説明書

C#で書いてます。
どこに需要があるかわかりませんがご参考まで。

Nugetでこれを以下を取ってきます。

System.IO.Ports

using

using System.IO.Ports;
using System.Text;

以下ソースコード

        static System.IO.Ports.SerialPort _serial;

        static void Connect()
        {
            _serial = new SerialPort("COM3");   // COMの名前を指定 デバイスマネージャーでDENSO WAVE Active USB-COM Portとなっているやつを探す

            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);// 2021/06/30追記(Shift-JISで読み込む) 2021/06/30追記()
            _serial.Encoding = Encoding.GetEncoding("shift_jis");// 2021/06/30追記(Shift-JISで読み込む)

            _serial.DataReceived -= Recieved;   // シリアルポートでデータを受けた時のイベント 一旦クリア
            _serial.DataReceived += Recieved;    // シリアルポートでデータを受けた時のイベント登録

            // シリアルポートオープン
            _serial.Open();

            _serial.DtrEnable = true;  // DTRの有効化
            _serial.RtsEnable = true;  // RTSの有効化

            System.Threading.Thread.Sleep(50);  // 安定するまで一瞬待つ

            _serial.WriteLine("U1" + '\r');      // オートオフモード
            System.Threading.Thread.Sleep(50);

            _serial.WriteLine("Z" + '\r');      // 読み取り待機
            System.Threading.Thread.Sleep(50);

            _serial.WriteLine("R" + '\r');      // 読み取り可能状態に入る
        }

        static void Recieved(object sender, SerialDataReceivedEventArgs e)
        {
            // シリアルポートからのデータ吸出し
            string tmp_msg = _serial.ReadExisting();

            Console.WriteLine(tmp_msg);
        }

        static void Main(string[] args)
        {
            // 接続
            Connect();
            Console.ReadLine();

            // COMポートのクローズ
            _serial.Close();

            // オブジェクトの破棄
            _serial.Dispose();
        }

とりあえず、行先ボードアプリに実装しておきました。

行先ボードアプリのソースコードはこちら。
https://github.com/zeikomi552/Destinationboard

おわり

コメントする

メールアドレスが公開されることはありません。