Любое событие в C # .Net, которое сообщает мне о последовательном порту dataReceived событие stop Получение данных

StackOverflow https://stackoverflow.com/questions/1201036

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top