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

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

[复制链接]
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版