【发布时间】:2012-06-14 16:16:33
【问题描述】:
我在 Java 中从串口读取数据时遇到了一个奇怪的问题。
我必须通过工作正常的线程中的轮询方法从串行端口读取数据,但我需要将数据写入串行端口并读回 ACK。向串口写入数据成功,但我无法读回数据。这里有两个读操作,一个在线程中,一个在主线程中。
收到串行写入数据后,我暂停了使用标志从串行端口读取数据的线程,并在写入完成后再次开始从串行端口读取数据,但我无法读取数据。我在写操作后禁用了读取串口并启用了在线程中读取串口的线程,这里我看到了来自串口的 ACK 数据。
任何人都可以提出这个串行读取操作出了什么问题吗?它不是缓冲的读/写操作。
【问题讨论】:
-
我不确定我是否遵循您的逻辑。您似乎正在同时阅读三个不同的线程,这听起来不是一个好主意。
-
不是三个不同的线程,而是两个线程,一个线程连续轮询串行读取,另一个在主线程中,只有在执行写操作时才读取
-
虽然我仍然不知道这是什么原因,但我相信我理解这个问题。我相信他是说主线程发送了一个写入命令,其中有一个读取(ACK-Checker),之后应该看到一个 ACK,并在另一个线程中读取(我们称之为“普通读取器”)执行所有其他读取操作。问题似乎是当他从主线程写入时,ACK-checker 没有看到 ACK。如果他禁用“ACK-checker”,那么“普通读者”在进行正常轮询时会看到 ACK(通常不应该这样做)。这是正确的吗?
-
是的 Xantham,感谢您以适当的方式提出我的问题。
标签: java io serial-port