iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么理解C语言与物联网的简单通信协议
  • 559
分享到

怎么理解C语言与物联网的简单通信协议

2024-04-02 19:04:59 559人浏览 薄情痞子
摘要

本篇内容介绍了“怎么理解C语言与物联网的简单通信协议”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用C语言

本篇内容介绍了“怎么理解C语言物联网的简单通信协议”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

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

发送方在发送数据时,在元数据的基础上增加校验数据形成请求数据包(data pack),然后将请求数据包发送出去,并启动守卫计时器(Guard  Timer)。

接收方在收到请求数据包后,以跟发送方相同的算法对元数据进行计算得到校验数据,然后跟收到的校验数据进行比较,若相同,则说明数据可靠,可以使用;反之,说明数据被破坏,直接丢弃掉。若数据可靠,接收方以同样的格式做成响应数据包回复给发送方;若发现数据被破坏,接收方不回复任何数据。

如果发送方在守卫计时器超时前正确地接收到了接收方回复的响应数据包,则停止守卫计时器,并进行后续的处理;若发送方在守卫计时器超时时仍未收到接收方回复的响应数据包,则重新发送"1."中的数据包,如此反复,直到正确发送或达到了重传次数。

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

怎么理解C语言与物联网的简单通信协议
  • 包起始标识:通常使用固定数据,比如0xFA, 0xAA, 0xA5等;

  • 元数据长度:根据元数据长度进行断包。比如:元数据长度占1字节,校验数据占2字节,当元数据长度取值为10时,则数据包大小为14字节;

  • 元数据:发送的或接收的,有一定格式或意义的应用数据;

校验数据:按照某种校验算法(比如checksum,crc等)计算得到的值。

#define MAX_DATA_LEN  100      typedef struct tag_data_pack {     uint8_t sop;                          uint8_t len;                          uint8_t datas[MAX_DATA_LEN + 2];  }data_pack_t;

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

怎么理解C语言与物联网的简单通信协议

用C语言描述如下:

#define MAX_DATA_LEN  100      typedef struct tag_data_pack {     uint8_t sop;                          uint8_t addr;                         uint8_t len;                          uint8_t datas[MAX_DATA_LEN + 2];  }data_pack_t;

“怎么理解C语言与物联网的简单通信协议”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么理解C语言与物联网的简单通信协议

本文链接: http://www.lsjlt.com/news/84910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么理解C语言与物联网的简单通信协议
    本篇内容介绍了“怎么理解C语言与物联网的简单通信协议”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!用C语言...
    99+
    2024-04-02
  • ip协议怎么实现互联网上任意两台计算机的通信
    这篇文章主要介绍“ip协议怎么实现互联网上任意两台计算机的通信”,在日常操作中,相信很多人在ip协议怎么实现互联网上任意两台计算机的通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ip协议怎么实现互联网上任...
    99+
    2023-06-20
  • C语言怎么实现简单的通讯录管理系统
    下面是一个使用C语言实现简单通讯录管理系统的示例代码: #include <stdio.h> #include <...
    99+
    2024-03-08
    c语言
  • 怎么用C语言实现简单通讯录管理系统
    本篇内容主要讲解“怎么用C语言实现简单通讯录管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现简单通讯录管理系统”吧!C语言实现的通讯录管理系统,供大家参考,具体内容如下设计...
    99+
    2023-06-20
  • C语言怎么实现简单的图书管理系统
    实现一个简单的图书管理系统可以使用C语言来实现,以下是一个简单的示例代码: #include <stdio.h> #in...
    99+
    2024-03-08
    c语言
  • C语言数学问题与简单DP背包问题怎么解决
    本篇内容介绍了“C语言数学问题与简单DP背包问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数学顾名思义,数学类的题就是都可以用数...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作