我正在创建一个串行协议解析器,并希望有一些帮助过滤队列数据。我以前创建过串口解析器(使用c / c ++),但这次我使用的是C#,我省略了一个新手。
串行协议遵循以下格式:
byte StartByte (SOH = 0x01)
byte MsgCode
byte PayloadLength
byte[] Payload
byte StopByte (EOT = 0x04)
我有以下队列定义:
Queue<byte> rxByteQueue = new Queue<byte>(64);
当从串行端口接收字节时,它们被添加到rxByteQueue。
我尝试完成以下任务:
我可以处理#2和#3项,但感觉可能有一种很好的方法可以使用LINQ完成#1。
答案 0 :(得分:0)
这是最简单的方法,但它不适用于嵌套条目。
var message = rxByteQueue.SkipWhile(x => x != 0x01)
.TakeWhile(x => x != 0x04)
.Concat(new byte[] { 0x04 });
顺便说一下。嵌套条目如何?