数据包长度可能大于255

2019-07-27 16:58发布

RT,有没有什么好的办法?以前的协议里最大数据包长度不超过255,所以采用的是可变数据包长度模式,同步字后面跟着的一字节数据就是数据包长度。
现在因为需要改进,数据包长度可能大于255(大于255,需要采用无限长度模式),为兼容以前的协议的情况下,有什么好的办法处理?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
pangb
1楼-- · 2019-07-28 15:00

1、第二种合理,多发几次而已。改动较小。不过发送时间长,就会带来第二个问题,功耗和数据碰撞
2、长度,包头包尾,crc,一次发完,功耗小和冲突可能性小一点。
3、主各有各的好处,斟酌考虑
栩栩如生
2楼-- · 2019-07-28 19:30
时间上应该差不多吧?能不能再详细说说,谢谢
chenjunt
3楼-- · 2019-07-28 23:40
拆包发送 每包都加校验
栩栩如生
4楼-- · 2019-07-29 00:20
 精彩回答 2  元偷偷看……
ousj
5楼-- · 2019-07-29 02:08
时间差很多,不管你用多高的波特率发送,都有个发送延时和接收延时,每发送一次数据包,发送和接收都需要位同步即收发送01010101和字节同步固有的硬件地址。如果分多个包发送,则会增加发送时间。我记得burst是连续发送吧,你再试试单字节的。一个数据包分着发也是同样道理。
ousj
6楼-- · 2019-07-29 03:51

如果按你的第二种想法,先判断数据包长度是否大于255,如果大于255,再发命令字+有效数据,将数据包长度定义到最大即接近255,分包发送,总发送数据格式为:包头+长度+crc16+包尾

一周热门 更多>