Любое событие в C # .Net, которое сообщает мне о последовательном порту dataReceived событие stop Получение данных - PullRequest
0 голосов
/ 29 июля 2009

Я работаю над реализацией последовательного порта в C #. Я получаю данные из SerialPort, и я добавляю эти данные в коллекцию типа Queue (глобально объявлено). Я использую поток BackgroundWorker для обработки данных в очереди. Проблема в том, что. Если последовательный порт прекратит отправку данных, а полученные данные прекратят прием данных. В моей очереди все еще будут оставаться данные, требующие обработки. Есть ли способ, который говорит мне, что нет никаких данных, поступающих из SerialPort или другими словами Port_dataReceived перестает получать какие-либо данные. Так что я могу обрабатывать любые данные в очереди. Потому что на этот раз я буду уверен, что из последовательного порта не будет никаких данных, и что бы ни были данные в очереди, это последние оставшиеся данные, которые будут обработаны. Заранее спасибо - Четан

1 Ответ

1 голос
/ 29 июля 2009

Если вы используете System.IO.Ports.SerialPort, то я не верю, что что-то встроено. Вам нужно было бы кодировать это самостоятельно.

Есть ли причина, по которой вы не можете просто использовать событие DataReceived и обрабатывать данные по мере их поступления?

Это сложно, потому что вам приходится иметь дело с тем фактом, что прослушиватель SerialPort работает в другом потоке, поэтому вам может потребоваться беспокоиться о безопасности потока, но вы можете установить глобальную переменную DateTime и обновить ее в событии DataReceived, и затем проверьте это в своем коде, чтобы увидеть, было ли последнее время получения данных больше n секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...