RS232Cタイムアウトの設定

TimeOut(Rs232c)

 通常タイムアウト設定の変更は、必要ありません。

長いデーターを連続で送信する場合は、通信速度と、文字数から、タイムアウト時間を設定してください。

ReceiveInterval 二つの文字が到着するまでの最大許容時間をミリ秒単位で指定します。

ReceiveIntervals

基本的に_MaxDWordの指定を変更する必要はありません、UserInTimeを指定した場合は、ReceiveIntervalの値が使用されます。

ReceiveTimeOutReceiveMultiplierの両方に対して_MaxDWord0の組み合わせを指定した場合は、読み取り操作が直ぐに終了し、既に受信している文字を返して制御を戻します。

ReceiveInterval := 1500;

ReceiveIntervals:= _MaxDWord; MAXDWORD 0xffffffffが指定されます。

ReceiveIntervals:= UserInTime; ReceiveInterval1500が指定されます。

ReceiveMultiplier 1バイトあたりの読み取り時間をミリ秒単位で指定します。

 指定された値と、読み取りバイト数の積が計算され、ReceiveTimeOutと加算して使用されます。

 現在は、転送速度が速く1バイトの送信時間が1ミリ秒以下となっています。

ReceiveTimeOut(受信用)

 受信用のタイムアウト時間計算用固定部分です。

ReceiveMultiplierReceiveTimeOutの両方に0を指定した場合は、読み取りに対してタイムアウト時間の総計が使われないことを示します。(受信タイムアウトは無くなります)

SendMultiplier

 指定された値と、書き込みバイト数の積が計算され、SendTimeOutと加算して使用されます。

 現在は、転送速度が速く1バイトの送信時間が1ミリ秒以下となっています。

SendTimeOut(送信用)

SendMultiplierSendTimeOutの両方に0を指定した場合は、送信に対してタイムアウト時間の総計が使われないことを示します。(送信タイムアウトは無くなります)

Comm1.ReceiveIntervals:= _MaxDword; 0xffffffffが指定されます。

Comm1.ReceiveMultiplier := 0; //単位は mSec です。

Comm1.SendMultiplier := 0; //単位は mSec です。

Comm1.SendTimeOut := 0; //単位は mSec です。

Comm1.ReceiveTimeOut := 0; //単位は mSec です。

 最近では、RS232Cを利用して、長いデーターを送受信する事は、殆どありません。

Comm1.SendTimeOut := 1000; //単位は mSec です。(デフォルトは1000mSec)

Comm1.ReceiveTimeOut := 1000; //単位は mSec です。(デフォルトは1000mSec)

_MaxDWord = MAXDWORD 0xffffffff

evErr CommErrEvntを使用すれば、タイムアウト検出が出来ます。

送受信エラーの確認

CommErrEvnt