• 検索結果がありません。

第 4 章 アナログ出力制御に関する関数・命令 75

7. COMMODEMLINE

8

関数

COMRECVSIZE 受信バッファに蓄積されているデータサイズ(byte)を

返します。

5.2.1 初期化機能

COMOPEN命令を使って、ポートをオープンし、通信を行うために必要な初期化を行います。

初期化に必要な項目は、以下の通りです。

なお、これらの各設定は使用するハードウェアによって制約がある場合があります。

それぞれ、使用するハードウェアの仕様を確認してご使用ください。

1)

転送速度

シリアル通信の転送速度(bps) を指定します。

この設定は、接続先と同じ設定とする必要があります。

転送速度は、50~2,000,000(bps) の範囲で指定することができます。

転送速度の指定を省略する事もできます。

転送速度の指定を省略した場合は、9600bpsになります。

2)

パリティビット

シリアル通信のパリティビットを指定します。

この設定は、接続先と同じ設定とする必要があります。

パリティビットは、パリティなし、偶数パリティ、奇数パリティの

3

つのいずれか

1

つを指定す ることができます。

パリティビットの指定を省略することもできます。

パリティビットの指定を省略した場合は、パリティなしに設定されます。

3)

データビット長

シリアル通信のデータビット長を指定します。

この設定は、接続先と同じ設定とする必要があります。

データビット長は、5~8(bit) の範囲で指定することができます。

データビット長の指定は省略する事もできます。

データビット長の指定を省略した場合は、自動で 8ビットに設定されます。

4)

ストップビット長

シリアル通信のストップビット長を指定します。

ストップビット長は、1(bit), 1.5(bit), 2(bit) のいずれかを指定することができます。

この設定は、接続先と同じ設定とする必要があります。

5)

通信方式

シリアル通信の通信方式を指定します。

通信方式は、全二重、2線式半二重、4線式半二重のいずれかを指定することができます。

この設定は、接続先と同じ設定とする必要があります。

- 105 - Interface Corporation 6)

フロー制御

シリアル通信のフロー制御方法を指定します。

フロー制御は、フロー制御なし、ハードウェアフロー

(RS(C)/CS(I))

、ソフトウェアフロー

(XON/XOFF)

のいずれかを指定することができます。

この設定は、接続先と同じ設定とする必要があります。

7)

タイムアウト時間

受信タイムアウト時間を 1ms単位で指定できます。

COMRECV$, COMRECV

関数で受信バッファからデータを取り出す際、受信バッファには指定

したサイズ未満の受信データしか存在しないことがあります。このような状態のとき、タイム アウト発生まで受信データが指定したデータサイズ以上になるのを待ちます。タイムアウトが 発生した時、タイムアウト発生までに受信されたデータが返されます。

COMRECV$、COMRECV関数実行時の受信状態と、タイムアウト時間の関係は以下の通りです。

COMRECV$

COMRECV

関数実行時、既にデータが揃っている場合

'A'

受信データ 'B' 'C' 'D' 'E'

即座に処理が返り、

"ABC" の 3 バイト(文字) が返される。

COMRECV(1,1,3) または COMRECV$(1,1,3) の実行

・COMRECV$、

COMRECV関数実行時、データが揃っておらず、タイムアウト発生前にデータ

が揃った場合

'A'

受信データ 'B' 'C' 'D' 'E'

COMRECV(1,1,3) または COMRECV$(1,1,3) の実行

データが揃った時点で処理が返り、

"ABC" の 3 バイト(文字) が返される。

タイムアウト時間

COMRECV$

COMRECV

関数実行時、データが揃っておらず、タイムアウト発生した

'A'

受信データ 'B' 'C' 'D' 'E'

COMRECV(1,1,3) または COMRECV$(1,1,3) の実行

タイムアウト発生で処理が返り、

"AB" の 2 バイト(文字) が返される。

タイムアウト時間

Interface Corporation - 106 - 8)

セットアップタイム、ホールドタイム

半二重通信を行う際の受信→送信切替時間(セットアップタイム) および、送信→受信切替時間

(

ホールドタイム

)

1

μ

s

単位で指定できます。

また、この指定にしたがって、RS(C)信号も自動的に変化します。

… 送信データ 送信データ

RS(C) 送受信状態送

セットアップタイム ホールドタイム

送信バッファ エンプティ→非エンプティ

送信バッファ 非エンプティ→エンプティ

5.2.2 データ送信機能

データを送信する機能です。

データ送信にはCOMSEND命令を使います。

COMSEND

命令は、渡された送信データを送信バッファへセットすると即座に処理が返り、バック

グラウンドで

送信処理が行われます。バックグラウンドで送信バッファのデータを送信中の状態でも、続けて次 の送信データをCOMSEND命令で送信バッファへセットすることができます。

5.2.3 データ受信機能

データを受信する機能です。

受信データは自動的バックグラウンドで受信バッファへ蓄えられています。

COMRECV$, COMRECV関数は、受信バッファへ蓄えられているデータを取り出します。

データ取り出し時に指定したサイズのデータがない場合、COMOPEN命令で指定するタイムアウト 時間まで待ちます。タイムアウト動作の詳細は、「

5.2.1

初期化機能

7)

タイムアウト時間」の通り です。

5.2.4 制御信号入出力機能

COMポートの制御信号 (RS(C), CS(I), CD, ER, DR, CI等)

の入出力を行います。

出力方向の制御信号

(RS(C), ER)

は、

COMMODEMLINE

命令で制御する事ができます。

入力方向の制御信号 (CS(I), CD, DR, CI) は、COMMODEMLINE関数で状態を読み出すことができ ます。

5.2.5 使用するハードウェアによる制限について

使用するハードウェアによって、使用できる機能に制約がある場合があります。

ハードウェア毎の制約事項については、弊社 webページを参照してください。

- 107 - Interface Corporation

Interface Corporation - 108 -

備 考 ・ デバイス番号を省略した場合は、デバイス番号が1で動作します。

・ 指定できるポート番号の範囲は、使用するハードウェアが持つポート数により 異なります。

・ 転送速度の上限は、使用するハードウェアにより異なります。

ハードウェアの仕様をご確認ください。

・ セットアップタイム、ホールドタイムの設定は、半二重通信の場合のみ有効です。

・ セットアップタイム、ホールドタイムの設定は、以下の計算式で求められる値のみ 設定可能です。

RATE × CLK (RATE = 0~15 CLK = 1, 10, 100, 1000, 10000 単位は μs)

・ データビット長が5ビットの時、ストップビット長を2ビットにすることはできません。

使用例 100 'デバイス番号1, ポート1 のCOMポートを初期化する

110 '115.2kbps パリティなし データ8bit ストップ1bit 全二重 フロー制御なし 120 'タイムアウト 100ms

130 COMOPEN 1,1,"BAUDRATE=115200,TIMEOUT=100"

140 '10バイトの受信データを待つ

150 DO

160 SIZE=COMRECVSIZE(1,1) 170 LOOP WHILE SIZE < 10

180 '受信データを取り出して表示する

190 D$=COMRECV$(1,1,SIZE) 200 PRINT D$

210 'COMポートをクローズして終了する

220 COMCLOSE 1,1 230 END

- 109 - Interface Corporation

2. COMCLOSE

命令 i99-BASIC -

機 能 ポートをクローズします。

書式 COMCLOSE [<デバイス番号>,]<ポート番号>

① ②

① <デバイス番号>

(1) , 1~16 ○ 数値

デバイスのデバイス番号を設定します。

デバイス番号 RSW番号 デバイス番号 シリアルポート

1 0 255

2 1 256

3 2 …

長期安心 FACシリーズの CPUモジュール内蔵 シリアルポート

… …

11 A

… …

15 E

16 F

※ ソルコン、タフコン、マザコン、IO付タッチパネ ルシリーズでは、デバイス番号は1に設定され ます。

② <ポート番号>

1以上の整数 × 数値

パラ メータ

ポート番号を1以上の整数で指定します。

備 考 ・ デバイス番号を省略した場合は、デバイス番号が1で動作します。

・ 指定できるポート番号の範囲は、使用するハードウェアが持つポート数により 異なります。

使用例 「1.COMOPEN」の使用例を参照してください。

Interface Corporation - 110 -

3. COMSEND

命令 i99-BASIC -

機 能 データを送信します。

書式 COMSEND [<デバイス番号>,]<ポート番号>, <送信データ>, <送信データサイズ>

① ② ③ ④

① <デバイス番号>

(1) , 1~16 ○ 数値

デバイスのデバイス番号を設定します。

デバイス番号 RSW番号 デバイス番号 シリアルポート

1 0 255

2 1 256

3 2 …

長期安心 FACシリーズの CPUモジュール内蔵 シリアルポート

… …

11 A

… …

15 E

16 F

※ ソルコン、タフコン、マザコン、IO付タッチパネ ルシリーズでは、デバイス番号は1に設定され ます。

② <ポート番号>

1以上の整数 × 数値

ポート番号を1以上の整数で指定します。

③ <送信データ> × 文字列

送信データを文字列で指定します。

<送信データサイズ>

1以上の整数 × 数値

パラ メータ

<送信データ>のバイト数を指定します。

備 考 ・ デバイス番号を省略した場合は、デバイス番号が1で動作します。

・ 指定できるポート番号の範囲は、使用するハードウェアが持つポート数により 異なります。

・ <送信データ>へ任意の1バイトを与えるには、CHR$ 関数を使用します。

・ <送信データサイズ>は、文字数ではなく、バイト数です。

・ 文字列のバイト数は、LENB関数で求めることができます。

・ COMSEND命令では、送信データを送信バッファへセットし終えると処理が返ります。

このため、COMSEND命令の実行が終わっても、送信データの送信が 完了しているとは限りません。

使用例 100 'デバイス番号1, ポート1 のCOMポートを初期化する

110 '115.2kbps パリティなしデータ8bit ストップ1bit 全二重 フロー制御なし 120 ' タイムアウト 100ms

130 COMOPEN 1,1,"BAUDRATE=115200,TIMEOUT=100"

140 '"TestData"+CR+LF を送信する

150 D$="TestData"+CHR$(&h0D)+CHR$(&H0A) 160 COMSEND 1,1,D$,LENB(D$)

170 '送信を完了させるために1秒間WAITしてから、ポートをクローズする 180 SLEEP 1

190 COMCLOSE 1,1 200 END

- 111 - Interface Corporation

Interface Corporation - 112 -

備 考 ・ デバイス番号を省略した場合は、デバイス番号が1で動作します。

・ 指定できるポート番号の範囲は、使用するハードウェアが持つポート数により 異なります。

・ TMODEMLINE構造体の使用には、"PO001UART.BAS" をインクルードする必要が あります。

・ COMMODEMLINE命令では、TMODEMLINE.INメンバは使用しません。

・ RS-485では、C信号はRS、I信号はCSにそれぞれ対応しています。

・ RS-485では、DR, CD, CI, ERは使用しません。

使用例 100 'インクルードファイルをインクルードする

110 INCLUDE "PO001UART.BAS"

120 'TMODEMLINE 構造体の変数を用意する 130 STRUCT TMODEMLINE MODEMLINE

140 'デバイス番号1, ポート1 のCOMポートを初期化する

150 '115.2kbps パリティなし データ8bit ストップ1bit 全二重 フロー制御なし 160 'タイムアウト 100ms

170 COMOPEN 1,1,"BAUDRATE=115200,TIMEOUT=100"

180 'ER=ON, RS(C)=OFF にする 190 MODEMLINE.OUT.ER=1 200 MODEMLINE.OUT.RS=0

210 COMMODEMLINE(1,1)=MODEMLINE

220 'ポートをクローズする

230 COMCLOSE 1,1 240 END

ドキュメント内 i99-BASIC IO制御コマンド コマンドリファレンス (ページ 103-118)

関連したドキュメント