博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于制定通信协议
阅读量:6845 次
发布时间:2019-06-26

本文共 1495 字,大约阅读时间需要 4 分钟。

关于制定通信协议

制定一个通信协议:

制定协议一定要考虑,可靠性ecc,完备性,可扩展性,
除了考虑带宽而节省字节数的pack紧凑外,还有考虑不对齐问题引发的cpu处理头元数据的低效问题

分片和重组问题,重传问题。

安全性问题,加密,防伪,防***, 认证防伪

如何识别包头的分帧问题,引入magic头和magic尾。即同步问题, 收发端同步

1)OBD:

数据都是ascii码,\r\n作为一帧数据的结束,所以,如果有一帧串口数据接收错误,长度错误例如本应10字节,结果收到5字节,那么由于\r\n的判断,所以不会影响下一帧的数据。即出错很快就能恢复,而不是连环错误。 另外OBD数据命令都是AT开头,回复数据都是$OBD开头。
2)胎压检测:
数据是16进制,这样数据长度较短,另外由于数据很简单,所以格式是固定的长度,而且规定了每一帧的数据的开头magic为0xA5,结束magic数为0xDD。
所以如果有一帧串口数据接收错误,长度错误例如本应10字节,结果收到5字节,那么可以通过这些,很快的恢复,所以不会影响下一帧的数据。即出错很快就能恢复,而不是连环错误。

3)行车记录仪:

数据也得考虑怎么样才能区分出一帧、一帧的数据,如果某一帧长度接收出错,那么如何快速区分另外一帧。快速恢复,而不连环出错。
特别是我们还要回传一幅图像,那么这个十几KB字节的数据是各种值都有可能的,要是它解析错误,那么后面数据就很乱了。
例如以太网,除了物理层的简单的保证数据的起始、结束帧特征外

802.3有特征前导码用于帧同步。而且每帧长度有各最大值。所以能快速恢复。

串口物理层,只有简单的START和STOP简单标记区分简单的数据帧。需要上层协议来做帧错误恢复。

所以行车记录仪数据格式可能需要考虑帧同步问题,即需要特殊的前导码magic数。

关于制定一个通信协议:

需要考虑:
1)通讯的错误处理
2)如何判断出现错误
3)出现错误如何恢复,特别是帧长度错误时的快速恢复。
4)一帧数据长度,最大长度值。
5)协议的完备性。
6)32位操作系统,系统快速处理,head格式最好4字节对齐。
7)时间戳方面,需要明确以什么时区为标准。另外一般系统以64位长度作为时间戳比较多。另外,unix提供的gettimeofday()一般以 Epoch为基准,即1970-01-01 00:00:00 +0000(UTC). 不清楚java是否有特殊的api进行这样的转换到特定时间
8)ECC
9) TLV 格式 type length value
10)安全性。

magic魔数头的作用是,如果某帧crc校验失败,那么是否这帧的数据错误、帧头错误? 如果length就是错的,那么你按照这个length去找流的下一帧,那么后面所有帧都不可能正常解析,这就失同步了。所以有magic头,那么从第一个错帧开始,搜索后面的所有数据,找magic头,如果有,那么在按照格式去检查,如果不对,那么说明那个magic不是magic头,而不数据内容,只是刚好和magic头相同而已,那么就继续找,直到找到满足要求的magic头,即可以按照格式解析出正常的通过crc校验的数据。这个找magic头的过程叫做重新同步。 这个过程对于那种stream流式数据的帧数据分析很重要。

关于制定通信协议

详细的说明,请见:

链接: 提取码: un1h

另外我的相关培训视频请看:

欢迎观看我发布的各个课程:

另外我的免费的linux各种驱动开发课程如下:

转载于:https://blog.51cto.com/8906847/2370317

你可能感兴趣的文章
InfluxDB1.2.4部署(centos6.8)
查看>>
关于协同过滤技术
查看>>
简述 OAuth 2.0 的运作流程
查看>>
OpenJTAG与Jlink/J-link的区别
查看>>
聚焦能力开放 咪咕让中国移动全球合作伙伴大会智趣无限
查看>>
阿里NASA新知 量子通信保障信息更安全
查看>>
阿里推出国内首个锂电池服务器!
查看>>
让父母轻松享受智能生活 天猫精灵新品全测评
查看>>
当时刷大标语的智能养猪现在怎么样了!阿里云ET农业大脑告诉你……
查看>>
使用动态跟踪技术SystemTap监控MySQL、Oracle性能
查看>>
5600高流明更清晰 NEC CF6600U投影试用
查看>>
甘肃培育十大生态产业 文旅融合“爆发式”增长
查看>>
广铁今年春运预计发送旅客5930万人次
查看>>
欧洲时报:这三家法国大学拒绝上涨外国学生注册费
查看>>
区块链每日快讯(0125)-明星项目影视链MDC涉嫌造假
查看>>
全球皆可访问的 Google Codelabs 网站
查看>>
良好的 API 设计指南
查看>>
ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(中)
查看>>
Rust 交叉编译与条件编译总结
查看>>
Netflix推荐算法,让每个人看到不一样的电影海报
查看>>