OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3939|回复: 6

数据包的分割存储

[复制链接]

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2015-8-4
在线时间
46 小时
发表于 2016-1-19 16:40:05 | 显示全部楼层 |阅读模式
这两天在写一个小代码,具体是这样的,用的是STM32,通过其串口接收数据包,数据包里的数据遵从一个协议(协议是预先制定好的)。当然了,涉及到数据包时,必然会有数据包的起始位,和停止位(当然确定数据包的起始方法不止一种)。
我要做的便是解析收到的数据,将每一条送来的数据包按照协议,将其每个字节有序的存储下来。
一开始,我便想着从起始位入手,收到一个起始位,便开始存储数据,存储好起始位之后,便可以开始存储数据包中其他的有效字节。但是这个数据包中有效字节段接收的数据可能会出现和起始位一样的字符。一开始思路很乱,折腾了好多天,今天回过头看看写好的代码,总结了下自己切割存储数据包的方法。虽然可能会看着很挫,但是起码可以记录下来,以后回过头再看看。数据包的格式如图,我的数据分为ABCD四段,如果想要最快的分割数据包进行存储,可以直接设置两个标志位 即,接收完A后一个(1处),接收完B后一个(2处)(接收完C后的标志位可以要可以不要),这样,先拿标志位2进行判断,再拿标志位1进行判断,便可快速存储。

说了这么多,其实想表达的很简单,分割存储一个数据包时的思路,便是先按照协议将包分割成数段,每段添加一个标志位,再数据包中心的标志位2先做判断其是否置1,再对数据进行分割处理

if(B处还没接收好)
  接收A,B
else if(B处接收好了)
接收C D





111.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-1-19 16:50:17 | 显示全部楼层
谢谢分享,有点抽象.....
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复 支持 反对

使用道具 举报

22

主题

180

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2015-6-29
在线时间
101 小时
发表于 2016-1-19 20:02:41 | 显示全部楼层
如果数据包定长就简单,不定长的话每一包都应该包含本数据包长度的信息
我是菜鸟
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2015-8-4
在线时间
46 小时
 楼主| 发表于 2016-1-20 09:04:05 | 显示全部楼层
龙之谷 发表于 2016-1-19 16:50
谢谢分享,有点抽象.....

哈哈,其实主要还是想整理下自己的思路,一开始老想着从起始位开始判断,结果程序写来写去,变得杂乱,后来回过头发现,从中间截断开始判断,再去判断起始位,这样架构更合理
回复 支持 反对

使用道具 举报

4

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2015-8-4
在线时间
46 小时
 楼主| 发表于 2016-1-20 09:04:47 | 显示全部楼层
负西弱 发表于 2016-1-19 20:02
如果数据包定长就简单,不定长的话每一包都应该包含本数据包长度的信息

是的,我写的这个协议中就是有个字节告诉你数据包的长度的
回复 支持 反对

使用道具 举报

1

主题

93

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2014-3-12
在线时间
9 小时
发表于 2016-2-3 08:38:07 | 显示全部楼层
自己定义好包的格式,如 HEAD+TYPE+LENGTH(n)+DATA*n+TAIL(可选)。
然后用状态机接收不就行了。
功夫再高、也怕羊刀
回复 支持 反对

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2016-3-4 14:56:19 | 显示全部楼层
有限状态机无处不在!
30年众生牛马,60年诸佛龙象!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表