我应该哪个线程处理 RxTx SerialEvent.DATA_AVAILABLE 事件?

发布于 2024-07-06 00:18:06 字数 307 浏览 14 评论 0原文

我在 Linux 发行版上通过 usbserial 使用 RxTx 库。 RxTx 库的行为似乎与串行方式的工作方式完全不同(以一种糟糕的方式)。

我的应用程序有多个线程,我最大的问题之一是,我似乎突然在流中获得了一到两个额外的字节。 我不明白它们从哪里来,也不知道为什么。 当我使用另一个线程写入 RxTx 流时,此问题似乎更频繁地发生。

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

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

I'm using the RxTx library over usbserial on a Linux distro. The RxTx lib seems to behave quite differently (in a bad way) than how it works over serial.

My application has several threads and one of my biggest problems is that out of nowhere, I seem to be getting one to two extra bytes on my stream. I can't figure out where they come from or why. This problem seems to occur a lot more frequently when I write to the RxTx stream using another thread.

So I was wonder if I should process the read on the current RxTx thread or should I process the read on another thread when I get the DATA_AVAILABLE event.

I'm hoping someone might have good or bad reasons for doing it one way or the other.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长发绾君心 2024-07-13 00:18:06

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

发送和接收是否有可能共享一个缓冲区,或者当您发送时,字节也会以某种方式在输入上接收到 - 我之前在一些嵌入式系统上见过这种情况。

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

希望这可以给你一些线索。

This is just a guess, but it may give you a clue.

Is it possible that the send and receive shares a buffer, or that when you send, the bytes are also received on the input somehow - I have seen this before on some embedded systems.

You may find the best thing to do is initially keep both send and receive on the same thread. Another thing may be to make sure the output drains before trying a read.

Hopefully this may give you some clue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文