while + sendNo.00387
kymk さん 02/12/16 20:20
 
下記の様な通信中のルーチンを回すとsendの部分で
「シリアルポートの書き込みに失敗しました」とメッセージされます。
また、sendの後にsleepを入れると動作します。
スクリプトの先頭で、@RECEIVEを固定文字にすると動作します。
ハードウェアフローは行っていますが、スクリプト中では無効なのでしょうか?
getline @RECEIVE
##TIMES = 0
while ( ##TIMES < 499 )
send @RECEIVE + "^00A"
##TIMES = ##TIMES + 1
endwhile

[ ]
RE:00387 while + sendNo.00389
秀まるお2 さん 02/12/17 13:52
 
 send文で大量の文字列を一気に送信しようとすると、Windows内部にある送信
用のバッファがいっぱいになって、それ以上書き込みできなくてエラーが発生す
るんだと思います。

 一度に書き込み出来るバイト数は僕もよく分からないですが、適当なサイズを
送信したらしばらく待機させるか何か対策をしていただくしか無いように思いま
す。

 sleepを入れて解決するなら、とりあえずそうして欲しい所です。

[ ]
RE:00389 while + sendNo.00391
kymk さん 02/12/18 16:55
 
回答ありがとうございます。
メッセージは下記のみです。
@MESSAGE = "本日は雨天なり+++本日は晴天なり+++"
millisleep 100 の挿入でも動作しますので、もう少し少なくして
それで対応します。
ありがとうございました。

[ ]