Usar LINQ para buscar una matriz de bytes para todas las submatrices que comienzan / detienen con cierto byte

Estoy tratando con una aplicación de puerto COM y tenemos una estructura de paquetes de longitud variable definida con la que estoy hablando con un microcontrolador. El paquete tiene delimitadores para los bytes de inicio y detención. El problema es que a veces el búfer de lectura puede contener caracteres extraños. Parece que siempre obtendré el paquete completo, solo algunas conversaciones adicionales antes / después de los datos reales. Así que tengo un búfer al que agrego datos cada vez que se reciben nuevos datos desde el puerto COM. ¿Cuál es la mejor manera de buscar en este búfer cualquier posible aparición de mi paquete? Por ejemplo:

Digamos que mi delimitador de paquetes es0xFF y tengo una matriz como tal

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

¿Cómo puedo crear una función / estado de LINQ que devuelva todas las submatrices que comienzan y terminan con el delimitador (casi como un correlacionador deslizante con comodines)?

La muestra devolvería las siguientes 3 matrices:

{0xFF, 0x02, 0xDA, 0xFF}, {0xFF, 0x55, 0xFF}, and
{0xFF, 0x02, 0xDA, 0xFF, 0x55, 0xFF}

Respuestas a la pregunta(6)

Su respuesta a la pregunta