通讯协议制定之数据消息传输方式介绍

通讯协议制定之数据消息传输方式介绍

1. 前言

  • 通讯协议又称通信规程,是指通信双方对数据传送控制的一种约定,约定中包括对数据格式同步方式传送速度传送步骤检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守,它也叫做链路控制规程
  • 根据项目中的实际应用,本人总结了嵌入式开发中通讯协议制定的相关考虑因素和经验技巧,具体包含如下内容,可供参考学习了解 ( 介绍中阐述的相关术语使用了开发交流沟通中的讲法,可能存在说法不同;因本人技术水平有限,分享创作的内容可能存在不合理的地方,欢迎相互交流沟通、批评指正)
  1. 通讯协议制定之前言、背景介绍
  2. 通讯协议制定之交互方式、步骤介绍
  3. 通讯协议制定之数据包结构介绍
  4. 通讯协议制定之数据传输类型及传输规则介绍
  5. 通讯协议制定之数据消息传输方式介绍
  6. 通讯协议制定之数据包校验算法介绍
  7. 通讯协议制定之常见问题、注意事项总结
  • 消息数据是通信传输的交互数据,是整个协议数据包最核心的部分,本文详细介绍如何传输数据消息字段内容

2. 介绍2种数据消息传输方式

  • 本文以一个简单示例来说明,数据包的整体结构(一个极简单的结构)规定如下:
字段定义字段字节长度数据段
起始符2字节数据包的帧头,规定为 :0x44 0x46
消息编号1字节0~255滚动计数
消息业务类型2字节服务号,业务类型:0x2001为车辆行车电脑数据上报
消息长度1字节后续消息数据长度,n字节
消息数据n字节通信传输的交互数据
检验码2字节CRC检验算法结果
  • 需要传输的车辆行车电脑数据包括如下内容,数据传输方术采用大端模式(高位在前):
数据定义数据类型长度
车速2字节
转速2字节
总里程4字节
小计里程4字节
小计平均车速2字节
小计平均油耗2字节

2.1 固定格式顺序传输方式

  • 固定格式顺序传输方式即将需要传输的数据,按照先后顺序依次排列,每次传输时,按照这个固定顺序传输
  • 以上述为例,传输的整包数据格式为:
字段定义字段字节长度数据段
起始符2字节数据包的帧头,规定为 :0x44 0x46
消息编号1字节0~255滚动计数
消息业务类型2字节服务号:0x2001
消息长度1字节数据总长度16字节,固定传输0x10
消息数据16字节通信传输的交互数据,依次为:
车速 : 2字节
转速 : 2字节
总里程 : 4字节
小计里程 : 4字节
小计平均车速 : 2字节
小计平均油耗 : 2字节
检验码2字节CRC检验算法结果
  • 传输的数据包数据示例:

0x44 0x46 0x00 0x20 0x01 0x10 0x00 0x20 0x03 0xE8 0x00 0x00 0x20 0x16 0x00 0x00 0x02 0x65 0x00 0x23 0x12 0x45 0xXX 0xXX

  • 根据协议规定,传输的数据内容为:
数据定义数据类型长度传输数据
车速2字节0x0020
转速2字节0x03E8
总里程4字节0x00002016
小计里程4字节0x00000265
小计平均车速2字节0x0023
小计平均油耗2字节0x1245

2.2 添加signal id标记的传输方式

  • 上述传输过程中,每次传输都必须将6个数据同时发送一次,如果想要一次发送单个数据,无法满足
  • 为了实现单个数据的发送,为每个传输的数据,添加一个signal idsignal len的规定
数据定义数据类型长度signal idsignal len数据值
车速2字节0xF10x020x0020
转速2字节0xF20x020x03E8
总里程4字节0xF30x040x00002016
小计里程4字节0xF40x040x00000265
小计平均车速2字节0xF50x020x0023
小计平均油耗2字节0xF60x020x1245
  • 如要传输所有的数据,整个数据包为:

0x44 0x46 0x00 0x20 0x01 0x1c { 0xF1 0x02 0x00 0x20} { 0xF2 0x02 0x03 0xE8} { 0xF3 0x04 0x00 0x00 0x20 0x16} { 0xF4 0x04 0x00 0x00 0x02 0x65} { 0xF5 0x02 0x00 0x23 } { 0xF6 0x02 0x12 0x45 } 0xXX 0xXX

  • 假如车速发送变化,仅需要发送车速单个数据即可,发送的数据包为:

0x44 0x46 0x00 0x20 0x01 0x04 { 0xF1 0x02 0x00 0x46} 0xXX 0xXX

3. 小结

  • 固定数据格式传输的方式,每次传输的数据长度固定,数据内容固定,但是即使其中一个单一的数据发生变化,都需要发送所有数据
  • 固定数据格式传输的方式常适合数据内容变化频繁的应用场景,数据发送方式基本是周期传输
  • 添加signal id标记的传输方式为每一个传输的数据添加了一个signal idsignal len,因此增加了需要传输的数据内容和长度,比如如果需要同时传输示例中的6个数据,添加signal id 和长度后,比固定格式多了12个字节;但是如果只需要发送单个数据,以车速为例,只需要发送4个数据,减小了12字节
  • 添加signal id标记的传输方式常适合数据内容变化小,更新频率较慢的应用场景,数据发送方式是事件传输
  • 2种数据消息传输方式各有优劣,需要根据实际项目需求来选择

感谢阅读 若有错误 欢迎指正 !!!


  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

园长QwQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值