[Armadillo:02086] Re: シリアル受信でデータ取りこぼし
Yasushi SHOJI
email@hidden
2007年 9月 26日 (水) 11:02:47 JST
At Sat, 22 Sep 2007 23:31:46 +0900,
Hiroki Nakamura wrote:
>
> 現在、シリアル送受信でデータを取りこぼす現象が出ております。
> 考えられる原因等あれば、教えて下さい。
> (プログラムの話になってしまいますが、環境がArmadilloの場合だけ、
> 出ておりますので、参考までに質問させて頂きます。)
a9の com2はフロー制御できませんが、だいじょうぶですか?
[...]
> ・受信処理ではread関数で行い、戻り値をみて、データレングス分、
> 受信する処理とする。
[...]
> ・データ数が120byte以下の場合は、現象が出ない。
> (データが少ない時は正常に送受信する。)
大量のデータを受け取るときだけでているので、overflowしているような気が
します。データを受ける方が
while() {
length = read_data_length();
ok = read_nr_bytes(fd, buf, length);
if (ok)
do_something();
else
do_error();
}
としていると思うのですが、大量のデータの場合 do_something()に時間がか
かり、次のフレームを読み込めず fifoがあふれたりしませんか?
プログラムを「ただ読み捨てる」ように変更すると受信データ量が
送信側と同じになりませんか?
--
yashi
armadillo メーリングリストの案内