Я думал о наилучшем подходе к правильной обработке связи последовательного порта в моей программе. У меня есть какое-то устройство, которое отправляет мне данные, я получаю его с использованием события DataRecieved и метода ReadExisting. Все, что он читает, помещается внутри буфера, когда последняя строка равна некоторой строке, тогда я начинаю анализировать ее на какой-то пакет.Обработка связи последовательного порта COM
Кроме того, когда я отправить данные на это устройство и ждать ответ, я пометить флаг
bool isReady = false;
while(!isReady)
Thread.Sleep(500);
И в методе синтаксического анализа данных я установить этот флаг, чтобы верно так, когда я получаю пакетные данные, код может выпрыгнуть из этого цикла и продолжать работать по мере необходимости. Но, на мой взгляд, это не чистый/хороший способ сделать это. Иногда возникает проблема, если устройство не отправит пакет, который мне нужен, поэтому программа застряла в цикле навсегда.
Мне было интересно, как вы, ребята, разрешите это дело в своем коде?
Спасибо, и извините за плохой английский.
Похоже, вы используете событие DataReceived. Не используйте его, вы не используете его. Просто позвоните в Read(). –