Реализация двунаправленного кольца на COM портах - C#
Формулировка задачи:
Необходимо реализовать двунаправленное кольцо на COM портах
Кадр состоит из следующих полей:
Стартовый байт
Адрес отправителя
Адрес получателя
Тип кадра
Длинна поля данных
Данные
Стоповый байт
Проблема в том, что иногда не все данные приходят или приходят сразу оба кадра
Как проверят готовность COM порта к принятию данных?
Как внутри буфера определить где начало, а где конец кадра?
Решение задачи: «Реализация двунаправленного кольца на COM портах»
textual
Листинг программы
List<byte> InputBuffer;
...
try
{
InputBuffer.Add(serialPort1.BaseStream.ReadByte());
if(WantLength(InputBuffer)>=InputBuffer.Length)
{
//принят полный пакет
}
}
catch(TimeOutException e)
{
//время на принятие пакета истекло
}
...
int WantLength(List<byte> buffer)
{
if (buffer.Length<=5)
return int.MaxValue;
return (buffer[5]+6);
}