欢迎光临散文网 会员登陆 & 注册

“沧澜”通信协议介绍

2023-08-01 14:06 作者:独孤玖鸢  | 我要投稿

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

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

https://gitee.com/dugu-jiuyuan/canglan-communication-system


README

一、简介

1.概述

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

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

2.格式说明

通信的字节串格式如下:

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

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

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

3.支持的数据类型

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

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

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

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

二、使用方法

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

使用如下步骤:

  1. 配置 CangLan_List.txt

  2. 运行 CangLan_MakeList.py ,在 OBJ 文件夹生成C,python两种语言的配置文件

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

  4. 在需要使用"沧澜"通信系统的文件中引入"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

略(等高老师写这个)

四、注意事项:

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

  2. lib为库文件夹,不要乱改

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

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


“沧澜”通信协议介绍的评论 (共 条)

分享到微博请遵守国家法律