パソコンレジを作ってみよう!
第1回 キャッシュドロワを制御してみよう
|
今回使用する機器
DWS48MRS-2/USB
DWS48MRS-2/USBはパソコンのUSBインターフェースに接続して使用するキャッシュドロワです。
USBポートを経由してから信号を送ることで、トレイを開くことができます。
|
1)インターフェースの種類
パソコンとキャッシュドロワを接続インターフェースには通常3種類あります。
・レジプリンタなどに搭載されているDKD(Drawer
Kick Driver)インターフェース
・RS232Cポートを利用したシリアルインターフェース
・USBポートを利用したシリアルインターフェース(USB<->RS232C変換)
このような接続インターフェースがありますが、最終的にはキャッシュドロワの内部にあるソレノイドを駆動することによってトレイを開くことになります。
※ソレノイドとは、トレイのロックをはずす電磁石のことです。この電磁石の電流を流すとドロワ内部のフックが外れトレイがドロワ内から出てきます。
今回は、現在主流になりつつあるUSBポートを搭載したキャッシュドロワの制御を行います。USBポートはUSBハブを利用することにより多くの機器を接続することが可能になりますがそれに伴って注意点もいくつか存在します。詳細は「USB接続機器についての情報」をご覧ください。
2)パソコンとキャッシュドロワの接続
さて、キャッシュドロワをパソコンに接続してみます。今回使用するDWS48MRS-2/USB本体の背面を見てもUSBポートは存在しません。これはDWS48MRS-2/USB自身がDWS48MRS-2と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)を展開します。
・
・ポートの確認が取れたら、ここを参照して設定を行います。
- ユーティリティソフトウェアでキャッシュドロワからトレイを排出させることができたら設置完了です。
※USBコネクタにはシリーズA、シリーズB及びシリーズ・ミニBが存在します。通常は以下のような利用目的で使用します。
|
USBコネクタ(シリーズA) |
PC側(ホストアダプタ側)のUSBコネクタ(アップストリーム) |
|
USBコネクタ(シリーズB) |
周辺機器側のUSBコネクタ(ダウンストリーム) |
|
USBコネクタ(シリーズ・ミニB) |
携帯機器向けに追加された小型のUSBコネクタ(ダウンストリーム)。「ミニB」と称するコネクタは何種類かあるが、USBの規格書にあるミニBコネクタはこれ1つだけだ |
3)制御既定
DWS48MRS-2はUSBインターフェース(USB232-00)を通してシリアル通信を行うことでトレイを開くことができます。以下が通信条件です。
- 通信速度 300BPS、8Bit、NonParity、1StopBit
- 送信コマンド 00h、00h(2バイト分のマークフラグを送ります。)
制御プログラムを作成する場合の注意点がDWS48MRS-2取扱説明書の9ページと10ページに記載されています。必ずこの注意事項を読んだ上で作成してください。
4)プログラムの作成
今回は以下の環境を使ってプログラムを作成していきます。
- オペレーションシステム Windows2000
Professional SP3&Hot fix適用
- 開発言語
Microsoft Visual Basic Version6.0 SP5適用
注意: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になってますので、これをbox_commに変更しておきます。
次に、ボタンコントロールを貼り付けます。すでにキャッシュドロワが接続されているなら下記のプログラムを記述することでキャッシュドロワを開くことができます。
Private Sub Command1_Click ()
Dim DataOutput(0) as Byte
Dim CountOutput as Integer
Command1.Enabled = False
box_comm.CommPort = 1 ' キャッシュドロワの接続されてるポート番号
box_comm.Settings = "300,n,8,1"
box_comm.Handshaking = comNone
box_comm.PortOpen = True
DataOutput(0) = 0
For CountOutput = 1 to 2
box_comm.Output = DataOutput()
Next
Do
DoEvents ' 送信確認中に他のイベントを処理できるようにする
Loop Until box_comm.OutBufferCount = 0
box_comm.PortOpen = false
Command1.Enabled = true
End Sub
|
この状態では汎用性が無いので、以下の汎用的に使えるコードを掲載しておきます。
Private Function CommSet_(ary() As String)
On Error GoTo CommSet_Err
Dim comm As MSComm
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
Resume CommSet_Exit
End Function
Public Function CommSet(data As String)
Dim ary() As String
ary = Split(data, ",")
CommSet = CommSet_(ary)
End Function
Public Sub BoxOpen()
Dim OutputData(0) As Byte
Dim OutputCount As Integer
box_comm.PortOpen = True
OutputData(0) = 0
For OutputCount = 1 To 2
box_comm.Output = OutputData
Next
Do
DoEvents
Loop Until box_comm.OutBufferCount = 0
box_comm.PortOpen = False
End Sub
Private Sub Form_Load()
CommSet "1,300,n,8,1"
End Sub
Private Sub Command1_Click()
Command1.Enabled = False
BoxOpen
Command1.Enabled = True
End Sub
|
尚、以下のメソッドは他のフォームからも呼び出すことが可能ですので、このフォームをプロジェクトに追加するだけで使用することができます。
- CommSet
通信ポートの初期化を行います。順にポート番号、速度、パリティ、データ長、ストップビットと指定します。
- BoxOpen
このコマンドでキャッシュドロワを開きます。
今回作成したVisual Basicのプロジェクトファイルと実行モジュールを公開しています。
下記のリンクからダウンロードしてください。
サンプルプロジェクト
Last Update : 2011/09/09
|