Реализация двунаправленного кольца на 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д