Using LINQ to search a byte array for all subarrays that start/stop with certain byte

Posted by Joel B on Stack Overflow See other posts from Stack Overflow or by Joel B
Published on 2011-01-06T16:02:17Z Indexed on 2011/01/06 16:53 UTC
Read the original article Hit count: 361

Filed under:
|
|
|

I'm dealing with a COM port application and we have a defined variable-length packet structure that I'm talking to a micro-controller with. The packet has delimiters for the start and stop bytes. The trouble is that sometimes the read buffer can contain extraneous characters. It seems like I'll always get the whole packet, just some extra chatter before/after the actual data. So I have a buffer that I append data to whenever new data is received from the COM port. What is the best way to search this buffer for any possible occurrences of my packet? For example:

Say my packet delimiter is 0xFF and I have an array as such

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

How can I create a function/LINQ-statment that returns all subarrays that start and end with the delimiter (almost like a sliding-correlator with wildcards)?

The sample would return the following 3 arrays:

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

© Stack Overflow or respective owner

Related posts about c#

Related posts about LINQ