您当前的位置:首页 > 互联网百科 > 物联网

C语言与物联网之简单通信协议

时间:2020-06-24 10:41:30  来源:  作者:

C语言物联网网关开发时,经常需要通过串口、485接口等从一些传感器读取数据,由于网关设备和传感器所处的环境复杂多样,电磁干扰等常常会破坏传输的数据,为了确保传输数据的可靠性,通常会采取一些策略,常用的策略:数据校验+超时重传,具体过程如下:

  1. 发送方在发送数据时,在元数据的基础上增加校验数据形成请求数据包(data pack),然后将请求数据包发送出去,并启动守卫计时器(Guard Timer)。
  2. 接收方在收到请求数据包后,以跟发送方相同的算法对元数据进行计算得到校验数据,然后跟收到的校验数据进行比较,若相同,则说明数据可靠,可以使用;反之,说明数据被破坏,直接丢弃掉。若数据可靠,接收方以同样的格式做成响应数据包回复给发送方;若发现数据被破坏,接收方不回复任何数据。
  3. 如果发送方在守卫计时器超时前正确地接收到了接收方回复的响应数据包,则停止守卫计时器,并进行后续的处理;若发送方在守卫计时器超时时仍未收到接收方回复的响应数据包,则重新发送"1."中的数据包,如此反复,直到正确发送或达到了重传次数。

步骤1~3重点为了讲述如何确保数据可靠传输,真实情景中为了能正确地断包(识别数据包),通常会按照如下结构来定义数据包:

C语言与物联网之简单通信协议

 

  • 包起始标识:通常使用固定数据,比如0xFA, 0xAA, 0xA5等;
  • 元数据长度:根据元数据长度进行断包。比如:元数据长度占1字节,校验数据占2字节,当元数据长度取值为10时,则数据包大小为14字节;
  • 元数据:发送的或接收的,有一定格式或意义的应用数据;
  • 校验数据:按照某种校验算法(比如checksum,crc等)计算得到的值。
#define MAX_DATA_LEN  100     /* 假设元数据的最大长度为100字节 */
typedef struct tag_data_pack {
    uint8_t sop;                     /* 包起始标识,(Start Of Pack) */
    uint8_t len;                     /* 元数据长度,假设为1字节 */
    uint8_t datas[MAX_DATA_LEN + 2]; /* 元数据 + 2字节的校验数据 */
}data_pack_t;

总线式的通信中,通常还会在数据包中加入目标设备的地址,以便于确定数据是发往总线上的哪个设备,数据包的参考结构如下:

C语言与物联网之简单通信协议

 

用C语言描述如下:

#define MAX_DATA_LEN  100     /* 假设元数据的最大长度为100字节 */
typedef struct tag_data_pack {
    uint8_t sop;                     /* 包起始标识,(Start Of Pack) */
    uint8_t addr;                    /* 目标设备地址,假设为1字节 */
    uint8_t len;                     /* 元数据长度,假设为1字节 */
    uint8_t datas[MAX_DATA_LEN + 2]; /* 元数据 + 2字节的校验数据 */
}data_pack_t;

文中涉及的概念:

发送方、接收方、元数据、校验数据、请求数据包、响应数据包、守卫计时器。



Tags:物联网   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
大家好,我是志明。上一期我们聊了物联网的发展。今天我想和大家聊一聊物联网(IOT)的落地应用:共享设备。 相信各位对这个词并不陌生,随着互联网技术的快速发展,以共享设备为代表的...【详细内容】
2021-12-24  Tags: 物联网  点击:(18)  评论:(0)  加入收藏
随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题。通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联...【详细内容】
2021-12-16  Tags: 物联网  点击:(16)  评论:(0)  加入收藏
安科瑞 于洋 周洁摘要:现代物联网技术高速发展,许多场所已经开始合理应用物联网照明系统,作为工厂生产的重要因素之一,工厂照明系统的智能化控制可以有效提高工厂对能源的利用率...【详细内容】
2021-12-14  Tags: 物联网  点击:(20)  评论:(0)  加入收藏
来源:内容由半导体行业观察(ID:icbank)来自Ctimes,谢谢。在数字化实体世界中,物联网技术的应用相当广泛,市场潜能与商机庞大。麦肯锡(MGI)《物联网:超越市场炒作价值(The Internet o...【详细内容】
2021-11-30  Tags: 物联网  点击:(20)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  Tags: 物联网  点击:(56)  评论:(0)  加入收藏
物联网(IoT)行业正蓬勃发展,成功的物联网项目需要大量工程,本文讨论了完整物联网项目所需的开发人员技能:包括嵌入式开发技术,应用程序编程,大数据分析等等。硬件设计师大多数物...【详细内容】
2021-11-03  Tags: 物联网  点击:(29)  评论:(0)  加入收藏
M2M我的一般的理解就是机器到机器(Machine to Machine),点对点的机器链接。从概念上也可以理解为人到人(Man to Man)、人到机器(Man to Machine)。即时通信工具就是人到人的交互,人...【详细内容】
2021-10-29  Tags: 物联网  点击:(72)  评论:(0)  加入收藏
在这篇文章中,大家将了解MQTT协议,以及为什么在许多物联网应用中使用它。 MQTT协议最初由IBM开发,并且是专有的。它的开发是为了解决石油和天然气行业的传感器通过卫星与远程服...【详细内容】
2021-10-21  Tags: 物联网  点击:(32)  评论:(0)  加入收藏
WiFi发展至今已有20多年的历史,WiFi模组就已经不是一个新兴概念。随着国内市场上智能硬件的成长,WiFi迎来了"爆发式"增长,这也意味着WiFi模组找到了春天。无线通信模块的价值主...【详细内容】
2021-07-20  Tags: 物联网  点击:(106)  评论:(0)  加入收藏
背景介绍在 IoT 物联网场景中,因为消费者分布全球各地,设备会被销售到多个国家或地区使用。 如果需要通过某个固定的服务器,远程管理多个国家或地区的设备,那么可能会出现如下情...【详细内容】
2021-07-16  Tags: 物联网  点击:(80)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是志明。上一期我们聊了物联网的发展。今天我想和大家聊一聊物联网(IOT)的落地应用:共享设备。 相信各位对这个词并不陌生,随着互联网技术的快速发展,以共享设备为代表的...【详细内容】
2021-12-24  物联网系统开发大观    Tags:物联网   点击:(18)  评论:(0)  加入收藏
随着物联网设备数量的持续增加,这些设备之间的通信或连接已成为一个重要的思考课题。通信对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联...【详细内容】
2021-12-16  pheenet菲尼特    Tags:物联网   点击:(16)  评论:(0)  加入收藏
安科瑞 于洋 周洁摘要:现代物联网技术高速发展,许多场所已经开始合理应用物联网照明系统,作为工厂生产的重要因素之一,工厂照明系统的智能化控制可以有效提高工厂对能源的利用率...【详细内容】
2021-12-14  安科瑞于洋    Tags:物联网   点击:(20)  评论:(0)  加入收藏
来源:内容由半导体行业观察(ID:icbank)来自Ctimes,谢谢。在数字化实体世界中,物联网技术的应用相当广泛,市场潜能与商机庞大。麦肯锡(MGI)《物联网:超越市场炒作价值(The Internet o...【详细内容】
2021-11-30  半导体行业观察    Tags:物联网   点击:(20)  评论:(0)  加入收藏
计讯物联无线数传终端DTU,对接充电桩与后端管理中心,多量分散充电桩统一集中管控,工业设计,无线部署、远程状态监测。  无线DTU充电桩联网  1、无线数据终端DTU建立充电桩...【详细内容】
2021-11-05  物联界的程序猿    Tags:充电桩   点击:(40)  评论:(0)  加入收藏
物联网(IoT)行业正蓬勃发展,成功的物联网项目需要大量工程,本文讨论了完整物联网项目所需的开发人员技能:包括嵌入式开发技术,应用程序编程,大数据分析等等。硬件设计师大多数物...【详细内容】
2021-11-03  粤嵌教育    Tags:物联网   点击:(29)  评论:(0)  加入收藏
M2M我的一般的理解就是机器到机器(Machine to Machine),点对点的机器链接。从概念上也可以理解为人到人(Man to Man)、人到机器(Man to Machine)。即时通信工具就是人到人的交互,人...【详细内容】
2021-10-29  喻喻嗒    Tags:物联网   点击:(72)  评论:(0)  加入收藏
在这篇文章中,大家将了解MQTT协议,以及为什么在许多物联网应用中使用它。 MQTT协议最初由IBM开发,并且是专有的。它的开发是为了解决石油和天然气行业的传感器通过卫星与远程服...【详细内容】
2021-10-21  亿佰特物联网实验室    Tags:MQTT   点击:(32)  评论:(0)  加入收藏
介绍IconPark是字节跳动团队开源的一个开源图标库,一共提供超过2000个高质量的图标,提供可视化界面配置来实现不同的方案,非常适合开发者和设计师来使用! GithubGitHub:https://...【详细内容】
2021-07-19  爱分享Coder    Tags:IconPark   点击:(189)  评论:(0)  加入收藏
背景介绍在 IoT 物联网场景中,因为消费者分布全球各地,设备会被销售到多个国家或地区使用。 如果需要通过某个固定的服务器,远程管理多个国家或地区的设备,那么可能会出现如下情...【详细内容】
2021-07-16  公田    Tags:物联网   点击:(80)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条