У меня есть этот код:
private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
while(_serialPort.BytesToRead > 0)
{
var count = _serialPort.BytesToRead;
var bytes = new byte[count];
_serialPort.Read(bytes, 0, count);
AddBytes(bytes);
}
}
Код взят из Опрос последовательного порта и обработка данных.
Мой вопрос касается цикла «Пока». Когда обновляется "_serialPort.BytesToRead"? Это означает, что если описанный выше метод является методом, управляемым событиями, и я использую «_serialPort.Read», разве он не очищает весь буфер последовательного порта? Если ответ отрицательный, этот код может создать бесконечный цикл, не так ли?
_serialPort.Read
, конечно, очистит буфер, может быть, что-то еще будет получено после, но это тоже хорошо - только вы должны проверить возврат_serialPort.Read
- на случай, если он действительно не прочитал всеcount
байт - person Random Dev   schedule 21.04.2015