よくコンビニのレジで使用されているハンディスキャナ。
前から使ってみたかったのですが、入手することができたので行先ボードに反映してみます。
長期連休を利用して会社から許可をもらいました。
QRコードは僕の好きな技術の一つです。
どっかアメリカの会社がつくったやつでしょ?
と思ってたのですが国産でした。
もう少しアピールした方が良いんじゃないかな?
※「QRコード」はデンソーウェーブの登録商標(第4075066号)by Wikipedia です。
今回はQRコードの本家、デンソーウェーブ製のAT10を使用しています。
他にもハンディスキャナで有名なのはオムロンやキーエンスのものがあります。
今回、使用するのはATシリーズです。
AT10でもAT20でも動くことは確認しています。
AmazonのリンクはAT20。
動作イメージはこんな感じです。
製造系のアプリを開発するにあたってQRコードやバーコードの認識は重宝します。
キーエンスやオムロンもなかなか良いのですが、今回手に入ったのはデンソーウェーブ製のものでした。
できることなら全ブランドに対応したい・・・。
まぁ、ハンディスキャナマニアではないのでとりあえず無料の範囲で。
実装に関しては、ちょっとてこずるかなと思っていたのですが案外簡単でした。
最低限の読み取り処理ができるところまでを記載しています。
取説を読む限りでは結構色々できそうです。
LEDの色変えたり、ブザー音変えたり、連続読み取りしたり・・・。
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
おわり
コメントを残す