[Armadillo:02132] Re: シリアル受信でデータ取りこぼし

Hiroki Nakamura email@hidden
2007年 9月 29日 (土) 23:00:44 JST


お世話になっております。

動作確認・回答有難うございました。

> また、テストに使用したArmadillo-9のユーザランドイメージですが、
> http://armadillo.atmark-techno.com/howto/free-com1
> にある、inittab(atmark-dist-20070914/vendors/AtmarkTechno/Armadillo-
> 9/etc/inittab)の変更までを行なった状態で、ビルドしたイメージを使用してい
> ます。

ビルドする必要があったのでしょうか?ビルドは、していませんでした。
CFカードに構築した/etc/inittabの内容を
> http://armadillo.atmark-techno.com/howto/free-com1
に従って、書き換えただけでした。

起動時、COM2から起動ログが出力され、COM1側には、
何も出力されていなかったため、COM1とCOM2のチェンジは
成功したと思っておりました。

> newtio.c_cc[VMIN]
> の値はいくつに設定されているでしょうか?

newtio.c_cc[VMIN] = 1;
としています。

申し遅れましたが、シリアル送受信に関しては、
以下4つの処理だけを特化して、スレッド化しています。
1. 他スレッド(アプリ側)からのメッセージを受信
2. 1.で受信したデータをシリアルへ送信
 (状態を持っており、1.と2.は、同時に動作させない。)
3. シリアルからのデータを受信
4. 3.で受信したデータを他スレッド(アプリ側)へメッセージ送信
 (状態を持っており、3.と4.は、同時に動作させない。)

4.を「読み捨てる」だけにした場合、シリアルデータの
取りこぼしが無くなっているようです。※フロー制御なしで。
(yashiさまに提示されていた方法ですね。。。)

現在、プログラムを見直し中です。

以上、
よろしくお願いします。




armadillo メーリングリストの案内