Visual BasicでのMSCommの使い方


【ポーリング方式のプログラミング方法】

 ポーリング方式で通信プログラムを作成するには、下記のように
 行います。

(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
256000
P パリティ 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


  次のページへ    目次ページへ