受信時、受信読み込み完了を確認してから、アプリケーションに戻る場合は、
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]の様に、読み取り側の指定も同時に出来ます。