您的位置:首页 > 数码常识数码常识
常用的串口协议(串口自定义通信协议)
2025-05-12人已围观
常用的串口协议(串口自定义通信协议)
对于串口,我们知道不管是RS232还是RS485、RS422这些典型的串口标准通讯协议,只是定义了部分物理层,对于数据链路层等基本没有涉及,这也就体现了串口协议的灵活性,没有统一的标准,需要使用者自己来定义合适的数据协议来传输自己的数据。
串口自定义通信协议
串口通讯的数据格式为:起始位(1bit)、数据位(7bit)、奇偶校验位(1bit)、停止位(1bit)。
如图:
数据格式
对于这个协议其实略显的简单了一点,具体体现在:
校验位的能力太差。不能区分数据的类型。不能确定设备的地址。发送成功与否没有标识位。无法定位错误的数据等等。
对于此,我们特意给出一种比较常用的简单的数据帧形式。
1.帧起始
一般大家喜欢用0x55或者0xaa作为帧的起始位。我习惯用0x3C即"<"作为起始位。
2.命令域
主要要包含这几类数据,如:上行为0x10,下行为0x30,重新传输为0x50,应答为0x70。
3.地址域
假如地址域用一个字节表示,基地址为0x20,每一个从节点的偏移地址为上一个从节点的偏移地址加0x20。
4.数据域
这个可根据自己的数据传输的需要,设定合适的字节数。
假如我的数据需要为:1byte的硬件版本号、1byte的软件版本号、1byte的电池电量、10byte的动作数据。
那么我定义的数据就是13字节了。
5.校验域
常规使用CRC校验。2个字节。
6.帧结束
我习惯使用0x3E即“>”。
对于一帧的数据,我习惯使用两个连续的帧起始和帧结束,假如PC为主机,现在要从主机给从机偏移地址为0x04的设备传输一帧数据,数据格式即为:
<< 30 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >>
只是列出了了一个格式,没有具体的数据,也没有做CRC。
这样的数据格式基本就能有一些实用的价值了。
接下来我们来看一个实际的例子。
案例分享
假如现在有一个蓝牙主机和从机组成的无线网络,蓝牙从机是一块手环,它具有检测手部动作的功能,主机对应的是我们的目标设备,如我们家里面的智能窗帘。我们预实现的功能有:
1.主设备给从设备发送的数据流包含的信息需有:
需绑定的从设备的MAC地址时间指令包括但不限制于连接从机、断开从机、查询从机的状态即手环是否正确佩戴、待机、唤醒、低功耗模式、请求从机发送数据、禁止从机发送数据。
协议定义如下:
主机给从机发送指令(22字节),发送间隔不能小于800ms。
主机给从机发送数据的协议格式
其中:
指令信息对应关系如下
0x00 连接0x01 断开0x02 查询状态0x03 待机0x04 唤醒0x05 低功耗0x06 请求数据0x07 禁止发送数据;
6 个字节的时间按十进制存储 , 年月日时分秒各占一个字节, 其中年用(20000+1Byte) 来计
算, 其他直接用二进制直接转化成十进制。
直观列表如下:
协议列表
2.从设备给主设备发送的状态数据流包含的信息需有:
从机设备的电量工作状态错误信息版本信息时间本机设备编号
协议定义如下:
从机给主机发送状态数据(34字节),发送间隔2500ms。
从设备给主设备发送的状态数据流
其中(主要):
电量信息:0X0-0X64(十进制 0-100), 代表设备电量的百分比。
工作状态:
0X00 表示串口数据透传模式0X01 睡眠模式0X02 待机模式0X06 正确佩戴0X07 解锁成功0X08 未解锁0X09 充电模式0X0A 未正确佩戴0X0C 指令接收成功
直观列表如下:
协议列表
3.从机给主机发送的手势控制信息包含的数据需有:
陀螺仪数据手势数据时间设备MAC
协议定义如下:
从机给主机发送手势数据(共32字节 ),发送间隔20ms。
从机给主机发送的手势数据协议格式
其中:
8 位数据是陀螺仪手势数据
0X00 锁定0X01 解锁0X02 不动0X03 向上(X+)0X04 向下(X-)0X07 外旋(Y+)0X05 向外(Z+)0X08 内旋(Y-)0X06 向内(Z-)
手势数据
0X00 空0X01 放松0X02 握拳0X03 伸掌
直观列表如下:
协议列表
好了,到此我们只要有了这一套协议,就可以完成一套简单的手环控制的智能家居(窗帘)的动作了,后续就是具体程序的实现了。
这就是串口协议的特点,没有规定数据链层,我们需要结合自己的项目完成数据格式的定义和数据的定义。
有了我这样一套简单的demo模块,我相信简单的串口协议的定义应该是没有什么问题了。
上面就是小居数码小编今天给大家介绍的关于(串口自定义通信协议)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
怎么在word文档里加自定义水印(word为文档添加水印)
键盘怎么自定义改键软件(手机键盘怎么自定义改键)
wps自定义排序怎么操作步骤(wps文档自动排序怎么弄)
qq输入法常用语设置(qq输入法怎么设置自定义短语)
154897
对于串口,我们知道不管是RS232还是RS485、RS422这些典型的串口标准通讯协议,只是定义了部分物理层,对于数据链路层等基本没有涉及,这也就体现了串口协议的灵活性,没有统一的标准,需要使用者自己来定义合适的数据协议来传输自己的数据。
串口自定义通信协议
串口通讯的数据格式为:起始位(1bit)、数据位(7bit)、奇偶校验位(1bit)、停止位(1bit)。
如图:
数据格式
对于这个协议其实略显的简单了一点,具体体现在:
校验位的能力太差。不能区分数据的类型。不能确定设备的地址。发送成功与否没有标识位。无法定位错误的数据等等。
对于此,我们特意给出一种比较常用的简单的数据帧形式。
1.帧起始
一般大家喜欢用0x55或者0xaa作为帧的起始位。我习惯用0x3C即"<"作为起始位。
2.命令域
主要要包含这几类数据,如:上行为0x10,下行为0x30,重新传输为0x50,应答为0x70。
3.地址域
假如地址域用一个字节表示,基地址为0x20,每一个从节点的偏移地址为上一个从节点的偏移地址加0x20。
4.数据域
这个可根据自己的数据传输的需要,设定合适的字节数。
假如我的数据需要为:1byte的硬件版本号、1byte的软件版本号、1byte的电池电量、10byte的动作数据。
那么我定义的数据就是13字节了。
5.校验域
常规使用CRC校验。2个字节。
6.帧结束
我习惯使用0x3E即“>”。
对于一帧的数据,我习惯使用两个连续的帧起始和帧结束,假如PC为主机,现在要从主机给从机偏移地址为0x04的设备传输一帧数据,数据格式即为:
<< 30 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >>
只是列出了了一个格式,没有具体的数据,也没有做CRC。
这样的数据格式基本就能有一些实用的价值了。
接下来我们来看一个实际的例子。
案例分享
假如现在有一个蓝牙主机和从机组成的无线网络,蓝牙从机是一块手环,它具有检测手部动作的功能,主机对应的是我们的目标设备,如我们家里面的智能窗帘。我们预实现的功能有:
1.主设备给从设备发送的数据流包含的信息需有:
需绑定的从设备的MAC地址时间指令包括但不限制于连接从机、断开从机、查询从机的状态即手环是否正确佩戴、待机、唤醒、低功耗模式、请求从机发送数据、禁止从机发送数据。
协议定义如下:
主机给从机发送指令(22字节),发送间隔不能小于800ms。
主机给从机发送数据的协议格式
其中:
指令信息对应关系如下
0x00 连接0x01 断开0x02 查询状态0x03 待机0x04 唤醒0x05 低功耗0x06 请求数据0x07 禁止发送数据;
6 个字节的时间按十进制存储 , 年月日时分秒各占一个字节, 其中年用(20000+1Byte) 来计
算, 其他直接用二进制直接转化成十进制。
直观列表如下:
协议列表
2.从设备给主设备发送的状态数据流包含的信息需有:
从机设备的电量工作状态错误信息版本信息时间本机设备编号
协议定义如下:
从机给主机发送状态数据(34字节),发送间隔2500ms。
从设备给主设备发送的状态数据流
其中(主要):
电量信息:0X0-0X64(十进制 0-100), 代表设备电量的百分比。
工作状态:
0X00 表示串口数据透传模式0X01 睡眠模式0X02 待机模式0X06 正确佩戴0X07 解锁成功0X08 未解锁0X09 充电模式0X0A 未正确佩戴0X0C 指令接收成功
直观列表如下:
协议列表
3.从机给主机发送的手势控制信息包含的数据需有:
陀螺仪数据手势数据时间设备MAC
协议定义如下:
从机给主机发送手势数据(共32字节 ),发送间隔20ms。
从机给主机发送的手势数据协议格式
其中:
8 位数据是陀螺仪手势数据
0X00 锁定0X01 解锁0X02 不动0X03 向上(X+)0X04 向下(X-)0X07 外旋(Y+)0X05 向外(Z+)0X08 内旋(Y-)0X06 向内(Z-)
手势数据
0X00 空0X01 放松0X02 握拳0X03 伸掌
直观列表如下:
协议列表
好了,到此我们只要有了这一套协议,就可以完成一套简单的手环控制的智能家居(窗帘)的动作了,后续就是具体程序的实现了。
这就是串口协议的特点,没有规定数据链层,我们需要结合自己的项目完成数据格式的定义和数据的定义。
有了我这样一套简单的demo模块,我相信简单的串口协议的定义应该是没有什么问题了。
上面就是小居数码小编今天给大家介绍的关于(串口自定义通信协议)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
怎么在word文档里加自定义水印(word为文档添加水印)
键盘怎么自定义改键软件(手机键盘怎么自定义改键)
wps自定义排序怎么操作步骤(wps文档自动排序怎么弄)
qq输入法常用语设置(qq输入法怎么设置自定义短语)
154897
很赞哦! ()
上一篇:word文档中常用快捷键大全(word文档中常用的快捷键有哪些)
下一篇:返回列表