“沧澜”通信协议介绍
分享一个为电赛准备的通信协议,开源仓库链接:
没时间做视频了,就把开源仓库的README文件放在这里,后续更新去仓库看:
https://gitee.com/dugu-jiuyuan/canglan-communication-system

一、简介
1.概述
为了方便电子设备竞赛期间多个设备的通信与控制,设计如下通信系统。
考虑到绝大多数情况下,发送时通信传输的数据读取自变量,收到格式化的字节串后解析除的数据也将存入变量中,因此本通信系统将数据发送/接收与数据读写的过程合在一起,减少配置代码,提高开发效率。
2.格式说明
通信的字节串格式如下:
'@' + 格式编号 + 数据段长度 + '=' + 数据段 + 数据段CRC校验值 + '#'
其中@,=.#三个符号作为关键字方便快速校验
同时,格式也有“数据编译格式”的意思,包含本次传输的变量名称、顺序的信息。发送/接收数据时按照格式编号指定的方式编译/解析数据与变量。发送时只需传入格式编号,即可自动编译待发送的字节串。接收时,可根据接收到的字节串中的格式编号信息自动解析内容。
3.支持的数据类型
通信系统支持三种数据类型的收发与解析:
有符号整数:长度为4字节,类型记作int
有符号单精度浮点数:长度为4字节,类型记作float
无符号字符数组:长度为n字节,类型记作string
二、使用方法
为了开发,设置了自动工具生成配置文件。
使用如下步骤:
配置 CangLan_List.txt
运行 CangLan_MakeList.py ,在 OBJ 文件夹生成C,python两种语言的配置文件
将配置文件复制到工程文件夹中,导入添加文件路径
在需要使用"沧澜"通信系统的文件中引入
"CangLan.h"
,即可调用API
CangLan_List填写方法:
完整示例:
三、API说明
1.C语言API:
extern CANGLAN_FORMATTER formatter
可以被所有导入了
"CangLan.h"
文件的文件引用的格式化工具结构体`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);
打印该格式化工具可处理的全部变量
2.python API
略(等高老师写这个)
example文件夹中提供了三个样例程序与其对应的CangLan_List.txt文件,可供参考使用
lib为库文件夹,不要乱改
C语言文件中默认的printf配置为"sys.h"与"usart.h",如需修改为其他输出方式(例如在PC测试通信协议)可以前往"CangLan_tool.h"文件中修改引用的头文件。