VB2008による自動認識周辺機器の制御方法
無償の最新開発環境による業務機器の制御と関連情報について
月刊 自動認識 2008年7月号寄稿原稿で、紙面の都合で書ききれなかった部分を加筆しました。
最新のソフトウェア開発環境において、バーコードスキャナやラベルプリンタなど自動認識関連のハードウェア周辺機器を用いたWindowsベースのシステムを構築する方法について紹介する。
アプリケーション開発手法は、インターネット時代のOSの進化とともに変わってきているので、ハードウェアの選択や制御する際のポイントについて開発ノウハウを含めた要点を解説する。
本稿の説明として、QRコードを用いたシステム開発を仮想例として用いた。
QRコードはデンソー(現在はデンソーウェーブ)で開発された2D(2次元)バーコードであり、JISやISOに登録された公開シンボルであり、誰でも利用することができる。
携帯電話での利用で身近になっているQRコードではあるが、PCで応用するシステムとしてはまだ少ないようである。
携帯電話でも、URLの登録やクーポンの提示など、限られた応用範囲のものが多いため、実際に応用ができるように機器制御方法について解説する。
今回は、Windowsから周辺機器を制御するプログラム作成し、漢字を含むQRコードの発行から読み取りまでの、一連の動作を検証した。
- 自由書式で文書が登録できる付箋(シンボル)をイメージし、安価な紙ラベルにQRコードを印刷したものを使用した情報伝達の擬似システムを構築する。
- フリーの開発ツールでも、実用的なハードウェア制御の開発が可能か検証する。
- シリアル通信で接続した2DバーコードスキャナからQRコードを読み込ませる。
- QRコードやファイルから読み込まれたデータを、PCにて表示・編集・ハッシュ値による比較を行う。
- LAN接続したラベルプリンタにより、QRコードを印刷をする。
今回の例で用いた、QRコードの使用例として |
Start → |
↑
新規
↑
|
→ |
↑
追加
|
→ |
↑
追加
|
→ |
↑
追加
|
→ .... |
受入,ヤード1,高久,コード123,2008-04-11 03:02:32 |
|
↑ |
|
↑ |
|
↑ |
|
|
|
開梱,倉庫1,田中,コード200,2008-04-11 03:04:14 |
|
↑ |
|
↑ |
|
|
|
|
|
検品,ヤード1,高久,コード125,2008-04-11 03:05:01 |
|
↑ |
|
|
|
|
|
|
|
組込,ライン7,畑中,工程500,2008-04-11 03:05:47 |
|
今回の検証ソフト「QRメモピー」での出力例 |
使用の1例であるが、製造現場を例として、各現場で受け取ったQRコードにデータを追記してラベルを発行する。
作業履歴の取り込みや更新が簡単にできる。通信によるデータベース接続を用いることなくデータを引き渡せる。
上記例で最終位置のバーコードを読み取った場合、下記のようなデータがPCに取り込める。
|
検証に用いた機材について
今回用いた機材については、実際に開発や業務で使用できるように、以下の条件に着目し選択した。
- PCからの制御がしやすい機種であること。
- 誰でも入手しやすく、低価格の機種であること
- 機能が豊富で、業務用としての使用に耐えられる、耐久性・性能・品質を持つこと
- 複数のインターフェースモデルが存在し、用途に合わせてPC接続ができること。
- 持ち運び展示ができるように、小型・軽量であること。
機材詳細については、各製造メーカーのWebを参照のこと。
各製品の補足情報について、参考用に弊社WebのURLを示す。
QRコード読み込み
2D(2次元)バーコードスキャナについては、米国ハネウェル イメージング アンド モビリティ(HIM)
[旧社名 ハンド・ヘルド・プロダクツ HHP]社の
4206というシリアルインターフェースモデルを、PCのRS-232 COMポート(38400bps,N81)に接続した。
4206について (4206 - 2次元バーコード対応
高性能エリアイメージャ [バーコードスキャナ])
QRコード印刷
QRコードラベルの印刷には、エプソン社のラベルプリンタ TM-L90のネットワークインターフェースモデルを用い、PCとLANインターフェースにて接続した。
印刷ラベルには、フリーサイズの全面ラベルを用いた。
TM-L90について (TM-L90サーマルラベルプリンタ)
PC
.Net Framework 2.0が動作し、LANとシリアルポートを備えたPCであれば、機種についての限定はない。
今回の開発及び動作検証には、Windows XPを用いた。
写真 QRメモピーと動作検証機材
手前:2DバーコードスキャナHIM 4206、右:ラベルプリンタEPSON TM-L90
|
開発環境 Visual Basicについて
2008年2月に、Microsoft® Visual Studio® 2008 日本語版が新しく登場した。
以前より、マイクロソフトからVisual StudioというWindows用のプログラムを開発する環境(ツール)が提供されている。
現在のVisual Studioでは、Microsoft .NET
Frameworkに基づいたプログラムの作成ができる。
それら製品の1つであるExpress Editionは、インターネットからのダウンロードやWebインストレーション、書籍添付CDからのインストールにより、誰でも無償で利用できる。
このVisual Studio Express Editionを使用して作成したアプリケーションプログラムは、商用目的であっても使用することができる。(詳しくは、マイクロソフトのWebを参照のこと)
「Microsoft Visual Basic 2008 Express Edition」 の編集開始画面
Visual Studio Express Editionには、Visual BasicやVisual C++、Visual C#などの複数の開発用言語や開発ヘルプが提供されている。
今回は、この中からVisual Basic 2008 Express Editionを用いてプログラムを作成し、自動認識ハードウェア機器が実際に制御できるかを検証した。
開発言語であるVisual Basicについて、バージョンにより対応が異なるので、参考のためにその系譜を紹介する。
*発売日はマイクロソフトプレスリリースの中の、VBを含むVisual Studio Professionalのパッケージ版発売を基準とした。
・ Visual Basic 6.0 日本語版 (以下 VB6) |
1998年9月発売 |
COM 開発用 (.NET Framework 未対応) |
・ Visual Basic .Net 2002 日本語版 (以下 VB.Net) |
2002年3月発売 |
.NET Framework 1.0/1.1 開発用 |
・ Visual Basic .Net 2003 日本語版 (以下 VB.Net) |
2003年6月発売 |
.NET Framework 1.0/1.1 開発用 |
・ Visual Basic 2005 日本語版 (以下 VB2005) |
2006年2月発売 |
.NET Framework 2.0 開発用 |
・ Visual Basic 2008 日本語版 (以下 VB2008) |
2008年2月発売 |
.NET Framework 2.0/3.0/3.5 開発用 |
VB自体を大きな変化で捉えると、 VB6→VB.Net→VB2005というステップになるであろう。
VB.Netは、OSの新しい基本的な仕組みである.NET Framework(ドットネットフレームワーク) のバージョン1.0/1.1に対応するため登場した。
ビルドするターゲットが.NET Frameworkに変わってしまったため、VB.NetはVB6と比べるとまったく別の製品であるかのようであった。
当時その変化を補うだけの技術情報が乏しかったため、VB.Netでプログラムを開発することはかなり難しいこととなり、結果として、古くからの多くのVBプログラマはVB.Netについてこれない状況となった。
多くの点を改善された.NET Framework 2.0が登場し、それに対応した開発言語がVB2005である。
さらにVB2005を少し進化させ、Vista対応の.NET Frameworkも3.0/3.5も含めて登場したのが現在のVB2008である。
バージョンが異なる.NET Frameworkは、異なるシステムと考えたほうが良く、前述のとおり、VBのバージョンとビルドできる.NET Frameworkのバージョンとは対になっている。
今のところVB2008だけは、ビルドする.NET Frameworkを、3種のバージョンから選択できる。
本稿の以下の文章では Visual Basic 2008とVisual Basic 2008 Express Editionについて、特に差異のない部分についてはVB2008と記する。
Visual Basic 2008 Express Edition特異の部分についての記述がある場合は、VB2008 Expressと記する。
QRコードについて
QRコードでは、2バイト漢字であるShift-JISコードのみの場合、最大1817文字と、1Dバーコードから考えると、巨大なデータを入れることができる。
QRコードの仕様については、JIS X0510で参照できる。
データを登録できる最大量は、シンボル外形、エラー訂正レベル、登録する文字種類によるモードなどにより異なる。
QRコードに登録できるデータは4モードあり、データのサイズが異なるため、最大サイズのシンボルの中に登録できるデータ量が異なる。
モードは混在が可能である。
以下は最大サイズのシンボルにおける登録可能文字数を示す。各シンボルサイズでの最大文字数は、JIS X0510を参照のこと。
登録モード |
最大登録数 |
適用 |
数字 |
7089文字 |
数字のみ |
英数字 |
4296文字 |
数字(10種)、英大文字(26種)、記号(9種)[使用できる記号は、スペース, $, %, *, +, -, ., /, : ]
|
漢字 |
1817文字 |
JISX0208の付属書1(シフト符号化表現)で規定された漢字 [Shift-JISのこと] |
バイナリ |
2953Byte |
8bitデータ |
文字のモードにより登録できる文字の最大数が異なるのは、QRコードでは文字種に分けて文字を符号化してコンパクト化しているためである。
数字は 3文字を10ビットで符号化 = 7089文字 / 3文字 * 10bit / 8bit = 2953.75 Byte
英文字は 2文字を11ビットで符号化 = 4296文字 / 2文字 * 11bit / 8bit = 2953.5
Byte
そして漢字は 1文字を13ビットに圧縮 = 1817文字 * 13bit / 8bit = 2952.625 Byte
このように、いずれもバイナリデータとほぼ同じサイズとなる。また、3つも文字モードには、CRとかLFなど制御コードは含まれないのでバイナリデータとして記録される。
実運用面では、文字コードをQRコードの仕様限界付近まで入れていくと、QRコードシンボルが巨大なものとなるため、2Dスキャナでも読み取りにくくなる。
検証で用いた2Dスキャナ4206GSでは、TM-L90にてラベル用紙に誤り訂正能力レベルL、2ドット印刷では漢字1700文字程度を印刷したものを、スキャナを手で持って読みとることができた。 ちなみに、著者の携帯電話(P905i)では同じ条件で作成したQRコードを読ませたところ、漢字310文字程度までを読み取ることができた。
1Dバーコードはデータが同じ場合、生成シンボルは同じ形状となるが、QRコードは同じデータ、同じ誤り訂正レベルであっても、異なるシンボルが生成される場合がある。
これは、混在モードの解釈方法、使用するマスクパターンなど生成条件の違いによるものである。
QRコード読み込み
QRコードを読み込むバーコードスキャナの選択について、漢字コードを含んだQRコードを扱えるよう、シリアルインターフェースの機種を使用した。
一般的なキーボードインターフェースでは、キーボードの押されたキーポジション(キーコード)情報をPCに送っている。
押されたキー位置から文字コードへの変換処理はWindowsで行っているため、キーボードからPCに文字コードや漢字コードを直接送信することはできない。
シリアル通信はCOMポート(シリアルポート)を用いた通信で、RS232とよばれる通信規格に準拠したコネクタを用いている。
RS232規格では、コネクタ中に電源出力端子がないため、周辺機器を接続使用する場合、別途電源装置が必要となる。
シリアル通信は、PC登場以前から存在する通信方法なので、現在でも多くの業務機器で使用されている。
VB2008では、SerialPortクラスを用いることでシリアル通信のプログラムを作成することができる。
また、VBの画面デザインを行うフォームデザイナでは、ツールボックスからSerialPortコンポーネントを選択することで、同様にシリアル通信を利用できる。
SerialPortコンポーネント
では、実際にシリアル通信によるQRコードの読み込みを考えてみる。
スキャナのトリガボタン操作により読み取られたQRコードのデータは、(PCから見た場合)任意のタイミングでシリアル送信するので、PC側はそれを常にすべて受信する必要がある。
今回検証で使用するQRコードには、データ送信終了のコード(ターミネーション)は存在せず、また送られてくるデータ量をあらかじめ予想することはできない。
シリアル通信の受信データの取り込みは、受信するデータ量を指定して読み込み実行する。
受信バッファにたまっているデータ量が指定した受信サイズに満たない場合、指定したデータ量に達するか、タイムアウトするまで制御が戻ってこない。
プログラムの動作を停止させない(非同期での動作)方法としては、割り込みを使用したり、通信部分を別のスレッドで動作させるなど高度な方法がある。
ところでSerialPortコンポーネントは、通信状態(ポートをオープンして受信が可能な間)では常にデータを受信し、受信バッファに蓄積している。
受信バッファに読み込まれているデータ量はプログラムから知ることができるので、読み込まれているデータ量以下に受信データ量を制限すること、プログラムを待機状態にさせずに受信を行うことができる。
今回は、QRコードの受信に関して、タイマーコントロールを利用し、一定間隔でシリアルポートの受信バッファデータ量を監視するという方法を用いた。
これは受信量を管理するのではなく、転送量をリアルタイムで監視することで通信の終了を検出する考え方である。
転送量の変化が止まったことを検出した場合、データ転送が終了したものと判断し、SerialPortクラスのReadExistingというメソッドを使用して、読み込まれたデータを一度に引き取っている。
タイマーイベント内で、シリアルポートから受信データを読み込み、テキストボックスへ表示する例を示す。
COMポートに接続したバーコードスキャナからのデータ受信操作は、この数行で実現できる。
Static byteRemain As Integer
Dim byteCurrent As Integer = SerialPort1.BytesToRead
If byteCurrent > 0 AndAlso byteCurrent.Equals(byteRemain) Then
' 一定期間通信が停止したら、データを読み込む
TextBox.Text = SerialPort1.ReadExisting
Else
byteRemain = byteCurrent
End If
|
業務用USB機器の中には、USBポートへの接続であっても、設定やデバイスドライバにより、ソフトウェアからはシリアル接続として制御できるものがある。
名称はメーカーにより異なるが、多くの場合「仮想COM (Virtual COM)」という方法を用いているもので、デバイスドライバによりPCにシリアルポートとして認識させるものである。
USB接続の4206やTM-L90は、仮想COMドライバを用いることにより、プログラムからはシリアル機器として制御が可能であり、ポートが足りない場合などPC条件によっては有効な方法である。
但し、仮想COMはデバイスドライバを用いるためにハードウェアに依存するものがあるため、PCハードウェアによっては動作できない場合もあるので、注意が必要である。
日本語の問題
近年の周辺機器を接続した開発のなかで、日本語を取り扱う機器を制御する場合、日本語文字コードの取り扱いに注意する必要がある。
インターネットで使用されている日本語を含む文字コードは現在何種類も混在している。
また、現在のWindows内部では、日本語文字コードはUnicodeで処理されている。
Windowsがファイルや通信の入出力の際に文字コードを自動的に変換しているために、ソフト的に閉じた世界であれば見た目に感じられないが、PCと外部機器を接続した場合文字コードを考慮する必要が発生する。
産業機器や自動認識機器など周辺装置で漢字コードを使用する場合、多くの場合はShift-JISコードが用いられている。
外部機器と文字のデータ交換を必要とする場合、文字コードを意識する必要があり、文字コードが異なる場合はエンコード変換処理が必要である。
UnicodeやEUCへの文字コード変換は、登録されているコード体系や日本語文字数自体が異なるため、JISとShift-JISコードの変換のような 単純コードシフト
処理では変換はできない。
しかし、文字コード変換については、やはり.NET Frameworkのクラスを利用することで変換ができるので大きな心配はいらない。
文字コードがUnicodeでない場合はString型での処理ができず、以前のVB.NETでは、Byte配列などを用い、自分でエンコード処理が必要であった
。
しかしVB2005以降では、多くのライブラリでEncode属性を指定するだけで日本語が扱えるようになった。
シフトJISを用いる場合は、今回用いるSerialportコンポーネントでは、Encodingプロパティを指定することで、シリアル通信データは自動的にシフトJIS文字列として変換される。
SerialPort1.Encoding = GetEncoding("SHIFT-JIS")
|
Shift-JIS漢字コードは2バイトコードである為、データのエンコード処理を行う際に1バイト単位で通信データを処理してしまうと、2バイト文字を正しく扱えない。
送信されるデータを一括して読み込むことができるのであれば、2バイト系文字コードの分断などを考慮する必要がない。
読み込んだQRコードのファイル保存やファイルからの読み込みについても、VB2008では非常に簡単にできるようになっている。
編集枠であるテキストボックスの内容をファイルに保存する一番簡単なケースの例としては、WriteAllTextのみで実行できる。
ファイルエラー処理を組み込んでも以下の例のようにできる。
Try
My.Computer.FileSystem.WriteAllText("保存ファイル名.txt", TextBox.Text, False)
Catch ex As Exception
MsgBox("ファイル保存に失敗しました。", MsgBoxStyle.Critical)
End Try
|
ファイル入力も同様に、簡単に処理が行える。
Try
TextBox.Text = My.Computer.FileSystem.ReadAllText("保存ファイル名.txt")
Catch ex As Exception
MsgBox("ファイル読み込みに失敗しました。", MsgBoxStyle.Critical)
End Try
|
4206はQRコードのほか、通常のバーコードの読み取り性能も高いため、POSレジなどでQRコードを用いた新規サービス用プログラムを開発する際も応用できる。
今回の例では使用しないが、QRコード以外にもビットマップイメージをPCに取り込むこともできるので、伝票サインや印影などをバーコードと合わせて保存するなどにも応用できる。
QRコード印刷
QRコードラベルの印刷には、入手が容易で、取り扱いが簡単なエプソン社のラベルプリンタ TM-L90を用いた。
QRコード読み込みの例でシリアル接続方法は解説したので、印刷では現在のPCでは標準搭載されているLANインターフェースを用いた接続例を示す。 TCP/IP接続にてESC/POSコマンド列をラベルプリンタへ直接送信することにより、PCと離れた場所に置かれたラベルプリンタでもQRコードのラベル印刷を行える
。 ESC/POSコマンドを用いる場合、シリアルインターフェースやパラレルインターフェースモデルが開発しやすい。
Windowsからネットワーク機器に対して独自で制御を行う場合、あらかじめ機器に固有のIPを設定(固定IP)しておき、ソケットサービス(クラス)と呼ばれる制御方法で接続すると簡単である。
ネットワークインターフェースモデルの利点として
- 1台のプリンタに対して複数のPCから印字出力ができる。
- 伝送距離を長くとれるので、離れた位置や部屋のプリンタであっても印刷できる。 →キッチンプリンタなど
- 高速にデータ転送できる。
- ネットワークはPCでは標準インターフェースであるのでPCを選ばない。
- ケーブルなどの入手性がよい。低価格に配線工事ができ、多くの場合すでに導入済みである。
ネットワークインターフェースモデルのTM-L90では、ネットワークインターフェースボード内にサーバー機能を持つCPUが搭載されている。 データ通信を行うソケットサーバ機能や設定を行うWebサーバなどいくつかのサーバ機能を持っている。 データ通信を行うソケットサーバ機能で受け取ったデータは、シリアルやパラレルなど他のインターフェースと同様プリンタに渡される。
Net中のプリンタは、サーバとして常にPCからのソケット接続されるのを待機している。 通信が必要な際、PC側はクライアントとしてプリンタに接続する。 VB2008 Expressでは、TcpClientというNet.Socketsクラスを
準備されているので、これを使用することでTM-L90とソケット通信ができるので、印刷データの送信ができる。
.Netの標準機能である通信クラスを利用することで、ネットワーク通信といってもシリアル通信と同程度技術レベルがあれば、特殊なフレームやパケットなど
の概念を熟知しなくとも利用できる。(当然、あったほうがよいが)
実際には、設定した固定IPアドレス・ポート番号に対してソケット接続した後、ESC/POSコマンド列や印刷文字列を送信することで印刷は実行される。 基本的なネットワーク通信部分としては以下のプログラムで固定IP設定されたプリンタへ送信できる。(タイムアウトやエラー処理は省略する) 下記例では、GetEncodingにより、SendTextに入った文字列をShift-JISにエンコード変換処理している。 ESC/POSコマンドを送る場合は、コマンドが変換されることを防ぐためにエンコード処理は行わない。
dim byteSend() as byte = GetEncoding("shift_jis").GetBytes(SendText)
Using NetClient As New TcpClient()
NetClient.Connect(New IPEndPoint(IPAddress.Parse("192.168.192.168"), 9100))
Using stream As NetworkStream = NetClient.GetStream()
stream.Write(byteSend, 0, byteSend.Length)
End Using
End Using |
接続機器によって、接続方法やコマンド形式などは異なるので、各機器の仕様を参照してほしい。 ネットワークインターフェースを備えた機器の制御を自分で作成することは困難と考えて敬遠されていた方はあまりも簡単なので驚かれることと思う。
参考であるが、TM-L90のネットワーク通信の設定変更は、Windowsにインストールする専用ユーティリティプログラムを使用するほか、ブラウザから通信設定の変更を行うことも可能である。 TM-L90はWebサーバ機能を内蔵しているため、固定IPに設定したノートPCとTM-L90プリンタをクロスケーブルで接続し、設定されたIPを直接ブラウザで開くことで、現場でもIP設定の変更が可能である。 なお、現在設定されているネットワーク設定は、TM-L90のネットワークインターフェースのボタンで自己印字できる。
一般的な開発では、Windows用のプリンタドライバを利用することで、一般のレーザプリンタやインクジェットプリンタなどと同様に使用することができる。 機種によるが、業務用プリンタにはデバイスドライバにより拡張された用紙設定機能を持っている。 これらでは、用紙送りや印刷開始/終了ジョブに合わせて、用紙カットやキャッシュドロワを制御することができる。
今回は1枚ごとのラベル長が決められないため、ラベル形状(ダイカット)の無い全面ラベルロール紙を用いた。 全面ラベルはオートカッターに糊残り障害を出しにくいラベル紙を用いており、1ラベル印刷後にカットした。 注意点であるが、VB2008で用いている.NET Frameworkの印刷では、描画を制御するGDI+の制限からデバイスフォントが使用できない。 Windows用のプリンタドライバを用いた場合、プリンタ内蔵フォントを利用した制御方法には対応できない場合がある。 [技術情報:プリンタフォントを用いた印字プログラム開発の際の注意事項]今回の例では
(Windows用のプリンタドライバを用いずに、)QRコードのシンボル生成も含めて、全ての印刷をESC/POSコマンドの送信にて処理している。 印刷にWindowsフォントを用いる必要がない場合、ESC/POSやSTARコマンドなどプリンタ制御コマンドを用いることで、レシートやラベルをプリンタの最高速度で印刷処理ができる。
評価プログラムの紹介
今回検証用に作成したWindows用 QRコード運用プログラム 「QRメモピー」 を紹介する。
QRメモピーは、QRバーコードスキャナから読み込んだ情報を、PCにて編集し、QRラベルプリンタへ印字出力するアプリケーションプログラムである。
本誌販売期間中、本プログラムを無償ダウンロードできるよう公開する。
「QRメモピー by テクノベインズ」 と 「About」 画面
「QRメモピー」 について、簡単に内容を説明する。
今回はインストーラを準備していないので、.Net Framework 2.0がインストールされている環境が前提となる。
使用するフォルダにコピーすることで実行可能であるが、.Net
Framework2.0がインストールされていないと、QRメモピーを起動時にエラーが発生する。
(VB2008Express版はプログラムの配布が目的ではないので、インストーラは付属していません。)
QRメモピーでの巨大QR印刷例 |
漢字コードを登録したQRコード例 |
接続した2DバーコードスキャナのCOMポート番号(通信モードは38400bps,8N1)と、ラベルプリンタTM-L90に設定した固定IPアドレスを最初に登録する。
バーコードスキャナから読み込まれたQRコードの情報(読み込みデータ)は、左の大きな編集枠に入力される。
また、バーコード入力のほか、ファイルメニューから既存のテキストファイルを読み込むことができる。
ここはテキストの入力/編集枠であり、キーボードからの直接入力や、バーコード入力された内容にたいして編集することができる。
編集メニューもしくはキーボードからカット&ペーストによるクリップボード経由により、他のアプリケーションとのデータ交換が可能である。
日時ボタンにより、現在の日時を編集枠内の編集位置に挿入できる。
QRコードには、自由書式でデータを入れることを目的としているので、QRメモピーでは書式についての制限はない。
CSVなどの書式を用いることで、後にデータとしてPC処理も行える。
なお、今回は検証用なので、QRコードの入力最大文字数のエラーチェックは設けていない。
TM-L90の場合、QRコードの最大文字数を1文字でも越えた時点から、QRシンボルは印刷されなくなる。
印刷設定として、出力するQRコードのドットサイズ、エラーコレクションレベル、印刷枚数が指定でき、印刷ボタンでラベル印刷する。
テキストの印刷にチェックを入れると、バーコードの内容を文字として確認できるように、QRコードに併記してラベルに印刷する。
特別な機能として、編集枠内の内容を一意のコードにした、ハッシュ値という16進の数値を画面表示している。
ハッシュ値はCRCコードなどと同様に、データ内容から算出された固定の長さの数値であり、同一データからは同じ値が生成され、元のデータ中のどこか1ビットでも変更となった場合は異なるコードが生成される。
2つのデータについて、そのハッシュ値が異なる場合、2つのデータは必ず異なり、ハッシュ値が同じである場合、非常に高い確率で2つのデータが同一であることを示す。
あらかじめデータをハッシュ値に変換し、ハッシュ値を比較することで、Webページの内容更新のチェックや大きなデータや大量のデータから同じデータを探すなど、データ管理などで近年利用されている。
今回は複数のバーコードを読み込んだ際に、同一の内容であるかを簡単に比較できる手段として32bit長のハッシュ値を利用している。
ハッシュ値は1つの例であるが、最新の開発環境を用いることで、複雑な処理もクラスライブラリにより対応ができる。
以前の開発であれば、関数を作ること自体が大きな作業であったが、現在では問題を解決する方法をライブラリから探すことが大きな作業となっている。
まとめ
今回の執筆に際して、新しく登場したVB2008 Expressを使用した。
有償版のVB2008と使い比べてみたが、今回の開発レベルに限って言えば有償版と無償版で大きな違いは感じられなかった。
今回作成したQRメモピーからもわかるように、VB2008 Expressで作成したプログラムであっても、実運用に十分耐えうるレベルのプログラムが作成できると考えられる。
目的に合わせ、いくつかの機能を追加することで、さらに使いやすい専用プログラムとすることもできる。
無償版であるVB2008 Expressの機能制限としては、配布用のインストーラのパッケージが作成できない。
しかし、特別なクラス等の組み込みを必要としなければ、インストーラによるパッケージ化せずともExe形式の配布でも動作はできる。
VB2008でビルドしたプログラムは.NET Frameworkで動作するために、ビルドと同じバージョンの.NET
Frameworkを必要とするが、.NET Frameworkはインターネットを通じたWindows
Updateにて更新できるので、配布パッケージがなくともインストールが可能である。
また、VB2008
Expressではアイコンエディタが存在せず、アイコンのビットマップ作成ができなかったので、アイコン製作はVB2008を用いた。
アイコンの作成は、フリーのアイコンイメージエディタ等もダウンロードサイトなどから利用できるようであるので、これも大きな障害ではない。
今回HelpについてExpress版を利用したが、これも特に問題はなく、特別な参考書などは購入せずに、(過去のノウハウ以外では、)Helpとネット情報だけで、このプログラムは作成した。
かなり良質な情報の公開が増えている。
ここまで使ってみてVB2008 Expressはかなり良いできであり、とりあえず試す程度をはるかに超えた製品であると考える。
ただ、さらに進んだ開発やプログラム自体の販売を目的とした開発するのであれば、VB2008
Professionalなど有償版のエディションをお勧めする。 上記の違いのほか、こちらではユーザーコントロール等を作成することができるため、プログラムのモジュール化などを行うことができる。
プログラム資産を生かしていくのであれば、ユーザーコントロールやモジュール化が必要になってくると思う。
VB2005から搭載されたMyという機能はたいへん使いやすいもので、例えば、My.Settingsは値を代入するだけで次回プログラム起動時でもその値を引き継ぐことができるという便利なものだ。 フォームで使用するコントロールもそれに対応しているので、プロパティの設定だけで、ユーザーが最後に設定した値や文字入力を、次回プログラム起動の際に引き継ぐこともできる。 コントロールもVB6と比較すると実用的なプロパティがたくさん追加されており、今回の作成したQRメモピーでも、画面操作や見栄えに関する部分では、多くの部分はプロパティの設定だけですみ、ほんの少しのコーディングで作成することができた。 GUIなどグラフィカルな操作が重要であるWindowsのプログラム開発では、これらをうまく利用することで開発工数を大きく減らすことができる。
有料版のVisual Studio開発環境と比較すると、搭載されていない機能や制限もあるが、無償版としては十分すぎる機能を備えた開発ツールであり、とりあえずスタートするには
充分で、かつ最適なツールである。 最近のWindows PCがあれば、試すための費用がかからないので、まずはいちどトライしてみることをお勧めする。 Visual Basic 2008 には、Professional やStandardなど開発者向けのパッケージがあり、これらは無償ではないが、さらに本格的に開発を行うのであれば、導入を勧める。
自動認識機器を接続するための参考文献は少ないので、今回は通常は外部に公開しない開発技術も含めて解説を行った。
また内容的に、ある程度の技術を持ったエンジニアを対象とし、プログラム参考書などでは解説されない点に絞って解説した。
本稿では説明できる紙面が限られているため、テクノベインズのWebでも開発技術情報などを提供しているので、興味がある方は参考にしてほしい。
いろいろな要因により、国内での製造業やPC関連のハードをともなう開発は厳しい状況となっている。 本稿がすこしでも開発の参考になり、新たな製品やシステムが誕生してもらえば幸いである。
本著書中のプログラムコードは、すべてのPCでの動作を保証するものではありません。
実際動作確認を行った際のプログラムから、執筆用に部分的に切り出しを行い、また一部編集加工されています。
Visual Studio, Windows は米国 Microsoft Corporation
の米国およびその他の国における登録商標です。
QRコードは(株)デンソーウェーブの登録商標です。
そのほか、
引用した会社名、製品名は各社の商標または登録商標です。
Microsoft Corporationのガイドラインに従って画面写真を使用しています。
その他の参考
参考技術情報
主要販売製品
Last Update :
2011/09/09
|