“滄瀾”通信協(xié)議介紹
分享一個為電賽準備的通信協(xié)議,開源倉庫鏈接:
沒時間做視頻了,就把開源倉庫的README文件放在這里,后續(xù)更新去倉庫看:
https://gitee.com/dugu-jiuyuan/canglan-communication-system

一、簡介
1.概述
為了方便電子設備競賽期間多個設備的通信與控制,設計如下通信系統(tǒng)。
考慮到絕大多數(shù)情況下,發(fā)送時通信傳輸?shù)臄?shù)據(jù)讀取自變量,收到格式化的字節(jié)串后解析除的數(shù)據(jù)也將存入變量中,因此本通信系統(tǒng)將數(shù)據(jù)發(fā)送/接收與數(shù)據(jù)讀寫的過程合在一起,減少配置代碼,提高開發(fā)效率。
2.格式說明
通信的字節(jié)串格式如下:
'@' + 格式編號 + 數(shù)據(jù)段長度 + '=' + 數(shù)據(jù)段 + 數(shù)據(jù)段CRC校驗值 + '#'
其中@,=.#三個符號作為關鍵字方便快速校驗
同時,格式也有“數(shù)據(jù)編譯格式”的意思,包含本次傳輸?shù)淖兞棵Q、順序的信息。發(fā)送/接收數(shù)據(jù)時按照格式編號指定的方式編譯/解析數(shù)據(jù)與變量。發(fā)送時只需傳入格式編號,即可自動編譯待發(fā)送的字節(jié)串。接收時,可根據(jù)接收到的字節(jié)串中的格式編號信息自動解析內容。
3.支持的數(shù)據(jù)類型
通信系統(tǒng)支持三種數(shù)據(jù)類型的收發(fā)與解析:
有符號整數(shù):長度為4字節(jié),類型記作int
有符號單精度浮點數(shù):長度為4字節(jié),類型記作float
無符號字符數(shù)組:長度為n字節(jié),類型記作string
二、使用方法
為了開發(fā),設置了自動工具生成配置文件。
使用如下步驟:
配置 CangLan_List.txt
運行 CangLan_MakeList.py ,在 OBJ 文件夾生成C,python兩種語言的配置文件
將配置文件復制到工程文件夾中,導入添加文件路徑
在需要使用"滄瀾"通信系統(tǒng)的文件中引入
"CangLan.h"
,即可調用API
CangLan_List填寫方法:
完整示例:
三、API說明
1.C語言API:
extern CANGLAN_FORMATTER formatter
可以被所有導入了
"CangLan.h"
文件的文件引用的格式化工具結構體`int CangLan_Compiler(CANGLAN_FORMATTER *formatter, u8 formatNum);``
編譯指令,可以根據(jù)格式編號將變量編譯為字節(jié)串,存儲在字符數(shù)組
formatter->buffer
中。*formatter
:格式化工具結構體的指針formatNum
:格式編號返回值:編譯后字節(jié)串,即
formatter->buffer
的長度int CangLan_Resolver(CANGLAN_FORMATTER *formatter, u8 *rxstr, int rxstr_len);
*formatter
:格式化工具結構體的指針rxstr
:接收到的字節(jié)串的指針rxstr
待解析內容的長度返回值:格式編號
void CangLan_Print(CANGLAN_FORMATTER *formatter);
打印該格式化工具可處理的全部變量
2.python API
略(等高老師寫這個)
example文件夾中提供了三個樣例程序與其對應的CangLan_List.txt文件,可供參考使用
lib為庫文件夾,不要亂改
C語言文件中默認的printf配置為"sys.h"與"usart.h",如需修改為其他輸出方式(例如在PC測試通信協(xié)議)可以前往"CangLan_tool.h"文件中修改引用的頭文件。