パソコンレジを作ってみよう!
第2回 カスタマディスプレイを使ってみよう
|
今回使用する機器
VFD2002E
大きく見やすい蛍光表示管(VFD) 20桁2行
英数カナ表示。
CDF22VRSやDM-D110などの互換コマンドが使用できます。
|
1)インターフェースの種類
パソコンとカスタマディスプレイを接続インターフェースには通常2種類あります。
・RS232Cポートを利用したシリアルインターフェース
・USBポートを利用したシリアルインターフェース(USB<->RS232C変換)
上記にあげた方法は物理的にパソコンとカスタマディスプレイを接続する手段になります。実質的にはどちらのインターフェースを利用してもシリアル通信によるコマンド転送を行うことになります。
今回は、現在主流になりつつあるUSBポートを搭載したカスタマディスプレイの制御を行います。USBポートはUSBハブを利用することにより多くの機器を接続することが可能になりますがそれに伴って注意点もいくつか存在します。詳細は「USB接続機器についての情報」をご覧ください。
2)パソコンとカスタマディスプレイの接続
さて、カスタマディスプレイをパソコンに接続してみます。今回使用するVFD2002E/USB本体の背面を見てもUSBポートは存在しません。これはVFD2002E/USB自身がVFD2002EとRS232-USB
I/Fコンバータ USB232-00のセット製品であるからです。
まず、カスタマディスプレイの電源を投入していない状態で以下の手順を行います。このときパソコンの電源を投入しておいても問題はありません。
- カスタマディスプレイの背面にあるRS232Cコネクタ(Dsub
9Pin メス)に付属の接続ケーブル(9Pin オス-メスストレート結線)を差し込みます。付属の接続ケーブル以外を利用する場合には「通信ケーブル情報」を参照の上ご利用ください。
- 接続ケーブルの反対側をUSB232-00のRS232Cコネクタ(D-SUB
9Pinオス)に接続します。
- USB232-00付属のUSBケーブルをパソコン接続ポートに接続します。このケーブルには両端に異なった形状のコネクタがついていますので、形状を確認した上で接続してください。
- USB232-00付属のUSBケーブルをパソコンのUSBポートに差し込みます。
- USBケーブルをパソコンに接続するとドライバーのインストールが始まります。メッセージにしたがって、添付フロッピーからデバイスドライバをインストールしてください。インストール終了後、USB232-00は通常のCOMポートとして使用できます。
- 接続が完了するとUSB232-00のLINKランプ(LED)が点灯します。正しくインストールされていない場合、LINK
LEDは点灯しません。
- パソコンの設定が完了したら、キャッシュドロワにACアダプタを接続します。まれに電源投入直後にトレイが排出されることがありますが、誤動作ではありませんので速やかにトレイを戻してください。
- 添付のユーティリティソフトウェアをインストールします。インストールした段階ではCOMポートの設定が完了していませんので、次の手順で設定を行います。
・ デバイスマネージャを開きます。
・ ポート(COMとLPT)を展開します。
・
・ポートの確認が取れたら、ここを参照してINIファイルの設定を変更します。
- ユーティリティソフトウェアでカスタマディスプレイに文字が表示されたら設置完了です。
ユーティリティソフトのインストール及び設定方法などについてはVFD2002E取扱説明書(PDF:458KB)の15ページから19ページをご覧ください。
※USBコネクタにはシリーズA、シリーズB及びシリーズ・ミニBが存在します。通常は以下のような利用目的で使用します。
|
USBコネクタ(シリーズA) |
PC側(ホストアダプタ側)のUSBコネクタ(アップストリーム) |
|
USBコネクタ(シリーズB) |
周辺機器側のUSBコネクタ(ダウンストリーム) |
|
USBコネクタ(シリーズ・ミニB) |
携帯機器向けに追加された小型のUSBコネクタ(ダウンストリーム)。「ミニB」と称するコネクタは何種類かあるが、USBの規格書にあるミニBコネクタはこれ1つだけだ |
3)制御既定
VFD2002EはUSBインターフェース(USB232-00)を通してシリアル通信を行うことで画面に文字を表示できます。以下が通信条件です。
- 通信速度 9600BPS、8Bit、NonParity、1StopBit
- コマンド選択 ESC/pos DM-D110
- 国際文字設定 文字セット:日本
コードテーブル:カタカナ
4)プログラムの作成
今回は以下の環境を使ってプログラムを作成していきます。
- オペレーションシステム Windows2000
Professional SP3&Hot fix適用
- 開発言語
Microsoft Visual Basic Version6.0 SP5適用
- コマンドモード ESC/pos
DM-D110を使用
(コマンドセットに関してはVFD2002E取扱説明書(PDF:458KB)の23ページから24ページをご覧ください。)
基本的な文字表示を行う場合、ANK文字をカスタマディスプレイに送信するとディスプレイに文字列が表示されます。コントロールコードを伴った文字列を送信するとコマンド制御機能が働きます。
一番簡単な表示方法としては、
- カーソルを上行左端にセットするコマンドを送信する。(0Bh)
- 40文字(20桁2行)を送信する
これで全画面のデータを書き換えることができます。
※ VB5.0以上で文字列を扱う場合、内部的にUNICODEが基本になりますので、表示文字の生成には注意が必要です。この場合、BYTE型を用いることで文字コードに左右されること無く表示文字を生成することが可能になります。
注意:Microsoft Visual Studio .NET 若しくは .NET
Frameworkがインストールされている環境では正常な開発及び実行ができない場合があります。Microsoft
Visual Studio .NETを使用される場合は、今回のサンプルをVisual
Basic .NETに置き換えてください。一部言語仕様が異なりますので注意して置き換えてください。
Windowsでパソコンのシリアル通信ポートを使ったプログラムを作成する際、汎用に使えるカスタムコントロールが用意されています。それがコミュニケーションコントロール(MSComm)です。このOCXを使えばVisual
BasicでフォームにMSCommコントロールを貼り付けるだけで簡単にシリアルポートへの送受信プログラムを作ることができます。
それではVisualBasic6.0を起動してみましょう。
起動後、ツールボックスに下のアイコンが存在する人はすでにMSCommを使用したことがある人です。
このアイコンが存在しない場合は次の手順で追加してください。
- .ツールボックス上で右クリックして表示されるサブダイアログで「コンポーネント」を選択すると、追加可能なコンポーネントの一覧表が下図のような「コンポーネントダイアログ」で表示されます。
- この中にある、「Microsoft Comm Control 6.0」にチェックを追加してOKとすれば、下図のようにツールボックス内に電話の記号のMSCommコンポーネントが追加されます。
【フォームを作成する】
新しいプロジェクト作成で起動すれば自動的にフォーム編集Windowが開きます。開かない場合にはプロジェクトエクスプローラ内のフォームをダブルクリックして開きます。その後、ツールボックスのMSCommのアイコンをクリックしてフォーム上に貼り付けます。このコンポーネントは実行時に表示されませんので適当な位置に貼り付けてください。
ここで話の流れをスムーズにするために貼り付けたMSCommコンポーネントの名前を変更しておきます。
貼り付けた直後はオブジェクト名がMSComm1になってますので、これをvfd_commに変更しておきます。
今回はMSCommコンポーネントを使用して通信を行いますが、ここで注意点があります。VB6は文字コードとしてUNICODEを採用しているためにASCIIコードも2バイト文字として扱われています。通常であればBYTE配列に落としてからデータを整理して送信するところですがMSCommはこの操作を包括しているようです。よって”アイウエオ”という半角カナ文字もしっかり1バイト文字として送信されています。APIなどを利用してプログラムを書く場合にはこの点に注意してください。
次に、ボタンコントロールを貼り付けます。すでにカスタマディスプレイが接続されているなら下記のプログラムを記述することで文字が表示されます。
Private Sub Command1_Click ()
Dim CountOutput as Integer
Command1.Enabled = False
vfd_comm.CommPort = 1 ' カスタマディスプレイの接続されてるポート番号
vfd_comm.Settings = "9600,n,8,1"
vfd_comm.Handshaking = comNone
vfd_comm.PortOpen = True
vfd_comm.Output = "123456789"
Do
DoEvents ' 送信確認中に他のイベントを処理できるようにする
Loop Until vfd_comm.OutBufferCount = 0
vfd_comm.PortOpen = false
Command1.Enabled = true
End Sub
|
この状態では汎用性が無いので、以下の汎用的に使えるコードを掲載しておきます。
Public Function CommSet(channel, data As String)
Dim ary() As String
Dim ret
ary = Split(data, ",")
CommSet = CommSet_(channel, ary)
End Function
Private Function CommSet_(channel, ary() As String)
On Error GoTo CommSet_Err
Dim comm As MSComm
Set comm = vfd_comm
If channel = "box" Then Set comm = box_comm
comm.CommPort = ary(0)
comm.Settings = ary(1) & "," & ary(2) & "," & ary(3) & "," & ary(4)
comm.Handshaking = comNone
CommSet_ = True
CommSet_Exit:
Exit Function
CommSet_Err:
CommSet_ = False
MsgBox "パラメータが不正です"
Resume CommSet_Exit
End Function
Private Sub PutVFD(dt As String)
vfd_comm.PortOpen = True
vfd_comm.Output = dt
Do
DoEvents
Loop Until vfd_comm.OutBufferCount = 0
vfd_comm.PortOpen = False
End Sub
Private Sub Form_Load()
CommSet "1,9600,n,8,1"
End Sub
Private Sub Command1_Click()
Command1.Enabled = False
PutVFD "123456789"
Command1.Enabled = True
End Sub
|
今回作成したVisual Basicのプロジェクトファイルと実行モジュールを公開しています。
下記のリンクからダウンロードしてください。
サンプルプロジェクト
Last Update : 2011/09/09
|