Любое событие в С#.Net, которое сообщает мне, что событие Serial Port dataReceived останавливает получение данных

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


person Community    schedule 29.07.2009    source источник


Ответы (1)


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

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

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

person David    schedule 29.07.2009