Я застрял в странной проблеме, читая данные из последовательного порта в Java.Чтение ввода-вывода последовательного порта Java
Мне нужно прочитать данные из последовательного порта через метод опроса в потоке, который работает нормально, но у меня есть требование, когда мне нужно записывать данные в последовательный порт и читать ACK обратно. Запись данных на последовательный порт успешна, но я не могу прочитать данные назад. Здесь есть две операции чтения: одна в потоке и одна в основном потоке.
Как только я получаю данные последовательной записи, я приостановил поток, который считывает данные из последовательного порта с использованием флага и снова начинает считывать данные из последовательного порта после того, как запись выполнена, но я не могу читать данные. Я отключил чтение последовательного порта после операции записи и включил поток, который считывает последовательный порт в потоке, здесь я вижу данные ACK из последовательного порта.
Можно ли предположить, что происходит с этой последовательной операцией чтения? Это не буферизованная операция чтения/записи.
Я не уверен, что следую вашей логике. Кажется, вы читаете сразу три разных потока, что не похоже на хорошую идею. – gobernador
Это не три разные потоки, а два потока, один поток, который опроса для последовательного чтения непрерывно и другой в основном потоке, который читается только при выполнении операции записи. –
Хотя я до сих пор не знаю причины этого, я считаю, что понимаю вопрос. Я считаю, что он говорит, что основной поток отправляет команду записи и имеет в нем чтение (ACK-Checker), которое должно увидеть ACK после этого, и имеет чтение в другом потоке (позволяет называть его «общим читателем») выполнять любую другую операцию чтения. Проблема заключается в том, что, когда он пишет из основного потока, ACK-checker не видит ACK.Если он отключает «ACK-checker», тогда «обычный читатель» видит ACK, когда он выполняет свой обычный опрос (чего обычно не следует). Это верно? – Xantham