Например:
Я записываю некоторые данные в последовательный порт. Затем я вызываю метод для чтения ответа:
Код: Выделить всё
var bytes = new List();
var byteCount = _serialPortWrapper.BytesToRead; // the value 0 is stored in byteCount
while (_serialPortWrapper.BytesToRead > 0) // this is 0, so it doesn't go in here
{
try
{
bytes.Add(_serialPortWrapper.ReadByte());
}
catch (TimeoutException)
{
return null;
}
}
MyPacket packet; // I set a breakpoint here and I can see that data is available
if (MyPacket.TryParse(bytes.ToArray(), out packet))
{
return packet;
}
return null;
Как я могу сделать так, чтобы BytesToRead в первый раз возвращал правильное значение, а затем ReadByte( ) будет работать?
edit Обратите внимание: если я добавлю Thread.Sleep(500); перед любым из вышеперечисленных запусков он работает каждый раз. Однако я не хочу этого делать, потому что это своего рода хак. Есть ли способ обойти это?
Подробнее здесь: https://stackoverflow.com/questions/980 ... ytestoread