COMポート(シリアルポート)

1.通信条件の設定
 COMポート(シリアルポート)の通信条件の設定は,Windowsコントロールパネルの「システム」の「デバイスマネージャ」で行う(Windows NT4.0ではコントロールパネルの「シリアルポート」)。ボーレート,ビット数,パリティ,ストップビット長,フロー制御方式を通信相手と一致させる。
<Note> 通信相手がRTS/CTSを用いてフロー制御を行うとき,PC側はフロー制御を「ハードウェア」に設定する。

2.OPEN文
 COMポートを使う場合には次のような形のOPEN文を実行する。
例 OPEN #1: NAME "COM1"
 OPEN文の実行が終わると,受信が可能な状態になり,INPUT文を実行しなくてもバッファに受信されていく。OPEN文の実行前に受信したデータは破棄されるので,接続された機器からのデータの送信は,かならずOPEN文の実行後に行うこと。
<補足>
 ポート名に続けてコロンを書くと,Windowsのmodeコマンドと同様の書式で通信条件を書くことができる。
例1 OPEN #1:NAME "COM1: baud=9600 parity=N data=8 stop=1"
例2 OPEN #1:NAME "COM1: 9600,n,8,1,p"
例2の形式の場合,
 第1引数 ボーレート(baud rate)
 第2引数 パリティ n(なし),e(偶数),o(奇数)のいずれか
 第3引数 データビット長 通常,7または8
 第4引数 ストップビット長 1, 1.5, 2 のいずれか
 第5引数 x(xon/xoffを用いるフロー制御)
      p(ハードウェア ハンドシェイクによるフロー制御)

3.行を単位として送受する場合
 行を単位として交信する場合には,相手機器の行末コードを調べ,SET ENDOFLINE文を実行して相手方に合わせる。
例 SET #1: ENDOFLINE CHR$(13)
 相手方が仮定する行末文字がCHR$(13)&CHR$(10)の場合にはこの処理は不要。

4.文字を単位として送受する場合
 文字を単位として送受する場合には,送信に,末尾にセミコロンを付加したPRINT文を用い,受信にCHARACTER INPUT文を用いる。

5.バイナリデータを送受する場合
 バイナリデータを送受する場合には,通信ルーチンを含むプログラム単位のはじめに OPTION CHARACTER BYTE を書き,文字をバイト単位で扱えるようにしておく。この状態でCHARACTER INPUT文を実行すると1バイト受信する。受信結果は,ORD関数を用いて数値化する。

6.受信バッファ
 受信はバッファを介して行う。INPUT文を実行する前にデータが受信された状態になる。機能語CHARACTER PENDINGを伴うASK文を実行して受信バッファにたまったデータのバイト数を知ることができる。
例 ASK #1: CHARACTER PENDING n

7.CLOSE文
 COMポートの使用を終えるときはCLOSE文を実行する。
例 CLOSE #1

<参照> COMポートの使用例は,BASICをインストールしたフォルダのCOMMサブフォルダにあります。