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サブフォルダにあります。