Использование LINQ для поиска в массиве байтов для всех подмассивов которые запускаются / останавливаются определенным байтом

Я ' m работает с приложением COM-порта, и у нас есть определенная структура пакета переменной длины, с которой я разговариваю с микроконтроллером. В пакете есть разделители для начального и конечного байтов. Проблема в том, что иногда буфер чтения может содержать посторонние символы. Кажется, я всегда получаю весь пакет, просто немного лишней болтовни до / после фактических данных. Итак, у меня есть буфер, в который я добавляю данные всякий раз, когда новые данные поступают из COM-порта. Как лучше всего искать в этом буфере любые возможные вхождения моего пакета? Например:

Допустим, у меня разделитель пакетов 0xFF и у меня есть массив как таковой

{ 0x00, 0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF, 0x04 }

Как я могу создать функцию / LINQ-статус, который возвращает все подмассивы, которые начинаются и заканчиваются разделителем (почти как скользящий коррелятор с подстановочными знаками)?

Пример вернет следующие 3 массива:

{0xFF, 0x02, 0xDA, 0xFF}, {0xFF, 0x55, 0xFF}, and
{0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF}
11
задан Joel B 6 January 2011 в 16:02
поделиться