“沧澜”通信协议介绍
2023-08-01 13:52:21   来源:哔哩哔哩

分享一个为电赛准备的通信协议,开源仓库链接:

没时间做视频了,就把开源仓库的README文件放在这里,后续更新去仓库看:

/dugu-jiuyuan/canglan-communication-system


(资料图片)

README

一、简介

1.概述

为了方便电子设备竞赛期间多个设备的通信与控制,设计如下通信系统。

考虑到绝大多数情况下,发送时通信传输的数据读取自变量,收到格式化的字节串后解析除的数据也将存入变量中,因此本通信系统将数据发送/接收与数据读写的过程合在一起,减少配置代码,提高开发效率。

2.格式说明

通信的字节串格式如下:

'@' + 格式编号 + 数据段长度 + '=' + 数据段 + 数据段CRC校验值 + '#'

其中@,=.#三个符号作为关键字方便快速校验

同时,格式也有“数据编译格式”的意思,包含本次传输的变量名称、顺序的信息。发送/接收数据时按照格式编号指定的方式编译/解析数据与变量。发送时只需传入格式编号,即可自动编译待发送的字节串。接收时,可根据接收到的字节串中的格式编号信息自动解析内容。

3.支持的数据类型

通信系统支持三种数据类型的收发与解析:

有符号整数:长度为4字节,类型记作int

有符号单精度浮点数:长度为4字节,类型记作float

无符号字符数组:长度为n字节,类型记作string

二、使用方法

为了开发,设置了自动工具生成配置文件。

使用如下步骤:

配置 CangLan_

运行 CangLan_,在 OBJ文件夹生成C,python两种语言的配置文件

将配置文件复制到工程文件夹中,导入添加文件路径

在需要使用"沧澜"通信系统的文件中引入"",即可调用API

CangLan_List填写方法:

完整示例:

三、API说明

语言API:

extern CANGLAN_FORMATTER formatter

可以被所有导入了""文件的文件引用的格式化工具结构体

`int CangLan_Compiler(CANGLAN_FORMATTER *formatter, u8 formatNum);``

编译指令,可以根据格式编号将变量编译为字节串,存储在字符数组formatter->buffer中。

*formatter:格式化工具结构体的指针

formatNum:格式编号

返回值:编译后字节串,即formatter->buffer的长度

int CangLan_Resolver(CANGLAN_FORMATTER *formatter, u8 *rxstr, int rxstr_len);

*formatter:格式化工具结构体的指针

rxstr:接收到的字节串的指针

rxstr待解析内容的长度

返回值:格式编号

void CangLan_Print(CANGLAN_FORMATTER *formatter);

打印该格式化工具可处理的全部变量

API

略(等高老师写这个)

四、注意事项:

example文件夹中提供了三个样例程序与其对应的CangLan_文件,可供参考使用

lib为库文件夹,不要乱改

C语言文件中默认的printf配置为""与"",如需修改为其他输出方式(例如在PC测试通信协议)可以前往"CangLan_"文件中修改引用的头文件。

STM32使用Keil MDK编译时应在魔术棒的c/c++选项卡中开启GNU选项。

关键词:

上一篇:膀大腰圆的意思是什么 标准答案 膀大腰圆的意思
下一篇:最后一页