【ポーリング方式のプログラミング方法】
ポーリング方式で通信プログラムを作成するには、下記のように
行います。
(1) 通信ポートと接続する。
MSCommを使って最初に行う処理は、シリアルポート(COMポート)へ
接続することです。この処理は簡単で下記例のようにします。
《基本例》
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
CommPort
通信ポート番号を設定または取得します。
通信ポート(COMポート)は1から16までの番号で選択します。
通常のPCの汎用COMポートは2です。
COMポートが既に使用中であったり、存在しない場合にはエラーと
なりエラーメッセージダイアログが表示されます。
Settings
通信速度、パリティ、データ長、およびストップ ビット長を文字列で
設定または取得します。 指定フォーマットは "BBBB,P,D,S" です。
あらかじめ決められた以外の設定値を指定するとエラーメッセージが
表示されます。
項目 内 容 設 定 値 BBBB 通信速度 (bps) 110、300、600、1200、2400
9600 (既定値)、14400、19200
28800、38400、56000、128000
256000P パリティ E 偶数
M マーク
N (既定値) なし
O 奇数
S スペースD データ長 4 、5、 6、 7、 8 (既定値) S ストップ ビット長 1 (既定値)、 1.5、 2
PortOpen
通信ポートの状態を設定または取得します。ポートの開閉にも使用します。
設定値は2値で、 True オープン か False クローズ
(2)データを出力する
Output プロパティを使用して、コマンド、テキスト文字列、またはバイト配列
データを送信できます。
実際の例は下記のようになります。
《データ出力例》
' モデムへAT コマンドを送信するとき
MSComm1.Output = "ATDT 555-5555" & vbCr '電話ダイヤル指示
' テキスト文字列を送信するとき
MsComm1.Output = "これはテキスト文字列です。"
または、
Dim Out() As String
MSComm1.Output = Out
' バイト配列データを送信するとき
Dim Out() As Byte '可変長バイト配列の定義
MSComm1.Output = Out
(3) 送信の完了を待つ
OutBufferCount プロパティを使うと、伝送バッファに格納されているデータの
残りバイト数を調べることができます。
またOutBufferCount プロパティの値を 0 に設定すると、伝送バッファの内容
がクリアされます。
これを使ってデータを送信するプログラムを下記例とすれば、送信が完了する
まで待つことが出来ます。
《例》
OutBufferCount=0 'バッファクリア
Do
DoEvents() '他のWindowへの開放
MsComm1.Output = "これはテキスト文字列です。"
Loop While OutBufferCount >= 1
(4) データの受信
受信バッファからデータを取得するには、Input プロパティを使用します。
たとえば、受信バッファからデータを取得して、テキスト ボックスに表示
する場合は、下記のように記述します。
《例》
MSComm1.InputLen = 0
TxtDisplay.Text = MSComm1.Input
受信バッファの内容全体を読み取るには、その前にInputLenプロパティの
値を 0 に設定する必要があります。
逆にInputLenプロパティに値を設定するとそのバイト数単位でバッファから
データを取り出します。
InputLen プロパティの値は、デザイン時または実行時に設定できます。
特定の文字列を受信するまで待つには、下記の例のようにします。
《例》「OK↓」のデータを受信するまで待つ例
Do
DoEvents
Buffer$ = Buffer$ & MSComm1.Input
Loop Until InStr(Buffer$, "OK" & vbCRLF)
(5) 受信バッファの状態
データが 1 バイト受信されるたびに、そのデータは受信バッファに格納され、
InBufferCount プロパティの値が 1 増加します。
InBufferCount プロパティを使うと、受信バッファに格納されているデータの
バイト数を調べることができます。
さらにInBufferCount プロパティの値を 0 に設定すると、受信バッファの内容
がクリアされます。
(6) 通信ポートとの接続を解除する。
アプリケーションを終了し、使っていたCOMポートを開放するためには、
PortOpenプロパティを使います。
《例》
MSComm1.PortOpen = False