2008-09-17 26 views
1

私はLinuxディストリビューションでusbserialよりRxTxライブラリを使用しています。 RxTxのlibは、それがシリアルで動作する方法とはかなり違った(悪い方法で)動作するようです。RxTx SerialEvent.DATA_AVAILABLEイベントをどのスレッドで処理する必要がありますか?

私のアプリケーションにはいくつかのスレッドがあり、私の最大の問題の1つは、どこからでも私のストリーム上に1〜2バイト余分になっているようです。彼らがどこから来たのか、なぜ来たのか分かりません。この問題は、別のスレッドを使用してRxTxストリームに書き込むと、より頻繁に発生するようです。

現在のRxTxスレッドで読み込みを処理する必要があるのか​​、DATA_AVAILABLEイベントが発生したときに別のスレッドで読み込みを処理する必要があるのだろうかと思いました。

私は誰かがそれを一方向にやって良いか悪い理由があると思っています。

+0

更新:余分なバイトのソースを発見しました!彼らはUSBデバイスから来て、どんな方法でRxTxに関連していません! しかし、(RxTxまたは他の)から読んで最高のスレッドに関する私の質問はまだ答えられていないままです! – Jeach

+0

自分の質問に対する回答を作成して、回答をコメントに追加するのではなく、終了する必要があります。サイトを少しきれいに保ちます。 – Jrud

答えて

1

これは単なる推測ですが、手がかりを与えるかもしれません。

送信と受信がバッファを共有する可能性がありますか、送信時に何らかの理由で入力バイトも受信される可能性はありますか - これは以前の組み込みシステムで見てきました。

最初に送信と受信の両方を同じスレッドで保つことが最善の方法です。別のことは、読み込みを試みる前に出力が低下していることを確認することかもしれません。

うまくいけば、これはあなたにいくつかの手がかりを与えるかもしれない。

関連する問題