当前位置:首页 » 《休闲阅读》 » 正文

通信协议定义_houge101的博客

18 人参与  2022年01月06日 13:08  分类 : 《休闲阅读》  评论

点击全文阅读


好多同学第一次定义通信协议的时候比较懵,包括我第一次搞串口通信的时候,好长时间都没想明白应该怎么进行两块开发板之间进行数据通信,如何通过一块开发板去操控另外一块开发板,因此写此文章,以供大家参考

首先明白啥是通信协议,参考百度百科 通信协议_百度百科 给出的定义,通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。其实光看这个定义绝对云里雾里的,不知所云。下面按照我的理解进行分解吧。

通信协议总共分三部分:

一:规定通信硬件接口方式,如通过串口,网络,蓝牙或者其它方式进行通信

二:规定硬件通信的语法,如:串口需要规定  波特率 数据位  停止位  奇偶校验位(比较常用的就是 115200  8 N 1  或 9600 8 N 1两种),在比如 网络规定TCP传输还是UDP传输,传输端口号为多少等

三:规定通信规则,如

帧头

(2字节)

功能码

(1字节)

参数

(1字节)

数据长度

(1字节)

数据

(N字节)

crc校验

(2字节)

帧尾

(1字节)

一帧数据的开头2字节,定义为帧头,比如为0x5A和0x54这一字节分为高低四位参数标号0x01~0x07分别表示不同的参数,例如参数1为IP地址,参数2为子网掩码,参数3为默认网关,参数4为http端口号数据长度+数据(取值1~255)要发送的数据内容,存储顺序全部为网络字节序CRC_16校验,循环冗余校验码(CRC),用来检验数据是否正确,如果数据有误则弃包。

一帧

结束

标志

0xEE

高四位为读写位:
低四位为回复位。
读取0x10*
下置0x20*
回复读取0x01*
回复下置0x02*

上面为总括规则,后面则根据上面规则进行详细的数据定义。比如:想定义一条设置IP的通信协议,则 可以如下设置

帧头

(2字节)

功能码

(1字节)

参数

(1字节)

数据长度

(1字节)

数据

(4字节)

crc校验

(2字节)

帧尾

(1字节)

0x5A,0x54设置网络参数:0x11IP地址:     0x015IP地址CRC_16校验结束0xee

上面的通信协议仅仅是举例,实际协议则根据自己的项目需求进行对应更改即可。比如帧尾变成两个字节,功能码和参数合二为一,CRC校验采用1个字节的累加校验,超过255就溢出,只保留低八位即可等等 


点击全文阅读


本文链接:http://zhangshiyu.com/post/32783.html

字节  数据  参数  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1