Я имею дело с приложением COM-порта, и у нас есть определенная структура пакетной длины переменной длины, с которой я разговариваю с микроконтроллером. Пакет имеет разделители для байтов запуска и остановки. Проблема в том, что иногда буфер чтения может содержать посторонние символы. Кажется, что я всегда получаю весь пакет, просто дополнительную болтовню до/после фактических данных. Поэтому у меня есть буфер, в который я добавляю данные, когда новые данные получаются из COM-порта. Каков наилучший способ поиска этого буфера для любых возможных случаев моего пакета? Например:
Скажите, что мой разделитель пакетов 0xFF
, и у меня есть массив как таковой
{ 0x00, 0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF, 0x04 }
Как создать функцию /LINQ -statment, которая возвращает все подмассивы, которые начинаются и заканчиваются разделителем (почти как скользящий коррелятор с подстановочными знаками)?
Образец вернет следующие 3 массива:
{0xFF, 0x02, 0xDA, 0xFF}, {0xFF, 0x55, 0xFF}, and
{0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF}