RS232C受信の完了待ち指定

受信時、受信読み込み完了を確認してから、アプリケーションに戻る場合は、

Comm1.CommWaitFors := [waitRead]; を指定します。

指定は、RS232CデバイスをOPENする前に指定する必要があります。

受信読み込みが完了しない限り、

Comm1.Read(Buffer:Pchar,Size: integer);の、ルーチンから戻りません。

確実に、受信するためには、waitReadを指定します。

割り込みを使用して受信する場合は、既に読み込まれたサイズ指定で、読み込む為、待ち時間はありません。

割り込みを使用せず、直接、サイズ指定で、読み込みを実行し、受信データーが指定サイズより少ない場合、読み込みの待ちが発生します。

読み込みに、タイムアウト時間より長くなった場合は、完了を待たず戻ります。

タイムアウトの時間を設定してあれば、その時間で終了し、タイムアウトエラーを発生します。

readWaitを使用しない場合は、受信データーがあるかどうか、確認し、ある場合は、その受信データーの数を調べて、読み込む必要があります。

procedure TForm1.Button10Click(Sender: TObject);

var

Buff: pchar;

size: integer;

begin

size := Comm1.ReceiveSize;

if size = 0 then exit;

buff := Allocmem(size + 1);

Comm1.Read(Buff,size);

TT := Buff;

Edit1.Text := TT;

freemem(Buff,size +1);

end;

指定無し

Comm1.CommWaitFors := []; 又は Comm1.CommWaitFors := [waitWrite];

指定有り

Comm1.CommWaitFors := [waitRead];

Comm1.CommWaitFors := [waitRead,waitWrite]の様に、読み取り側の指定も同時に出来ます。

送信の完了待ち指定