Документация для последовательного порта гласит:
Событие DataReceived не гарантируется для каждого байта
получено. Используйте свойство BytesToRead, чтобы определить, сколько данных
осталось прочитать в буфере.
Протокол, который мы пытаемся реализовать, разделяет сообщения по периодам простоя. Поскольку мы должны полагаться на время каждого полученного символа, это ограничение .NET кажется проблемой.
Кто-нибудь знает, как SerialPort .NET решает, инициировать ли событие или нет. Чтобы избежать спама в событии на высоких скоростях, поэтому он их буферизирует?
Есть ли какая-либо гарантия, что хотя бы одно событие будет вызвано за каждые XY миллисекунды? Что это за минимальный период, если таковой имеется?
Как подойти к этой проблеме?
РЕДАКТИРОВАТЬ : Немного больше исследований показывают, что это можно сделать, установив таймауты. Глупый я!