你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何在数据包前加帧头,组合数据

[复制链接]
paulkiyt 提问时间:2018-1-19 16:07 /
目前在调试OV7740,读到每行的数据,每行数据有160多个字节。现在想在每行数据前加上一些帧头信息,比如这是行号,数据大小,等。然后每5行这样的数据拼起来组成一个包发出去。请问这怎么操作?
1.如何添加帧头信息
2.如何拼起来再发
收藏 评论10 发布时间:2018-1-19 16:07

举报

10个回答
yu0405jie 回答时间:2018-1-19 16:28:04
定义好一个数组,把帧头部分的空间预留出来,假设帧头需要10bytes的空间,则从数组的第11个元素开始存储读取到的OV7740数据

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

回答时间:2018-1-19 16:37:03
可以参考modbus协议

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

paulkiyt 回答时间:2018-1-19 16:44:41
yu0405jie 发表于 2018-1-19 16:28
定义好一个数组,把帧头部分的空间预留出来,假设帧头需要10bytes的空间,则从数组的第11个元素开始存储读 ...

你好,谢谢您的回答。如果一行数据是160个bytes,5行的话就有800bytes,加上一些帧头等一包数据就有800多字节,这样的话数组会不会太大了点
yu0405jie 回答时间:2018-1-19 16:50:44
paulkiyt 发表于 2018-1-19 16:44
你好,谢谢您的回答。如果一行数据是160个bytes,5行的话就有800bytes,加上一些帧头等一包数据就有800多 ...

那得看你用什么单片机了,STM32的话小意思了
yu0405jie 回答时间:2018-1-19 16:52:04
paulkiyt 发表于 2018-1-19 16:44
你好,谢谢您的回答。如果一行数据是160个bytes,5行的话就有800bytes,加上一些帧头等一包数据就有800多 ...

不过大数组不要定义成局部变量,需要定义为全局变量
nyszx 回答时间:2018-1-19 16:52:19
二楼的方法+三楼的原理,创建一个包含帧头的缓冲区,然后把帧数据填充到缓冲区中的数据区去,最后发送时从头开始读取数据发送。
QQ截图20180119164922.jpg
连续的缓冲区(或链表),发送的时候指针从头开始,把五组全部发出去,800多字节根本不算大呀,TCP比这个大多了

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

zhoupxa 回答时间:2018-1-19 16:56:15
paulkiyt 发表于 2018-1-19 16:44
你好,谢谢您的回答。如果一行数据是160个bytes,5行的话就有800bytes,加上一些帧头等一包数据就有800多 ...

通讯信息帧一般是这种结构:帧头+长度+...数据...+校验
如果传输的数据量很大,可以考虑把一个大数据包拆分成几个小数据包传输,每个小数据包再增加包标识以便接收端识别。
800字节的数据并不算很大。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

paulkiyt 回答时间:2018-1-19 17:03:55
yu0405jie 发表于 2018-1-19 16:52
不过大数组不要定义成局部变量,需要定义为全局变量

camera出来的数据是640行,如果我要每64行组成一包的话,那不是要定义10个这样的数组?
hello_bug 回答时间:2018-2-7 10:28:17
在每行的图像数据前添加10个字节(这是个举例),这10个字节代表图像数据长度、序号之类的;第11个字节是有效的图像数据;上位机或其他设备收到后,去掉前10个字节,取第11个字节作为有效数据使用。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版