隔离在不同时间接收的字节数组中的数组

本文关键字:数组 字节 字节数 同时间 隔离 | 更新日期: 2023-09-27 18:17:44

我通过Uart从我的winform应用程序中的源每秒接收一个字节数组。让我们假设它像下面这样。99,98标志着一个新包的开始。每个包的长度是可变的,但它总是以这个99,98 id开始。我想将单个数据包复制到receivedBuffer中,然后单独处理它们

第二1:{56, 42岁,43岁,76125年56岁,34234年,12日,3,5,76年8 0 99 , 98 , 234年,56211122年,22岁,4,7,89年,76年,64年,12日,3,5, 99 , 98 , 0, 6125}

second2:

{6125、56、34234、12}

所以在上面的例子中,在第二个1中,我首先收到一些垃圾值,然后是一个完整的数据包和其他部分数据包。在第二个2中,我收到第二个数据包

的剩余部分。

(ps:数据包1是99、98,234、56,211,122、22、4、7、89、76、64、12、3、5)数据包继续发送,直到收到99,98个id字节

隔离在不同时间接收的字节数组中的数组

听起来像是一个难以处理的协议:您只能依赖于"数据包开始"标记,您没有"数据包长度"或"数据包结束"标记。

所以,合理地说,你可以这样做:

  • 从一个空数组开始
  • 每次你得到一些字节,将它们添加到数组
  • 解析新的数组内容查找"开始数据包"标记。如果找到两个(或更多),提取它们之间包含的字节,并删除找到的
  • 的最后一个"begin of packet"之前的所有字节。
  • 等待下一个字节

请注意,仅解析接收到的字节是无法理解最后一个数据包何时完成的。