2008-09-17 85 views
1

我在Linux发行版上通过usbserial使用RxTx库。 RxTx库似乎表现得非常不同(以一种不好的方式),而不是它如何通过串行工作。我应该处理哪个线程RxTx SerialEvent.DATA_AVAILABLE事件?

我的应用程序有几个线程,我最大的问题之一是,无处不在,我似乎在我的流上得到一到两个额外的字节。我无法弄清楚他们来自哪里或为什么。当我使用另一个线程写入RxTx流时,这个问题似乎更频繁地发生。

所以我想知道是否应该在当前的RxTx线程上处理读取操作,或者当我收到DATA_AVAILABLE事件时是否应该在另一个线程上处理读取操作。

我希望有人可能有好的或坏的理由做这种或那种方式。

+0

更新:我发现了额外字节的来源!它们来自USB设备,并且与RxTx无关! 但我最好的线程阅读(RxTx或其他)的问题仍然没有答案! – Jeach 2009-10-16 18:39:16

回答

1

这只是一个猜测,但它可能会给你一个线索。

有可能发送和接收共享一个缓冲区,或者发送时,字节也会以某种方式在输入上接收 - 我曾在某些嵌入式系统上看到过这一点。

您可能会发现最好的做法是最初在同一个线程上保持发送和接收。另一件事可能是在尝试读取之前确保输出消失。

希望这可能会给你一些线索。