这样的通讯协议应该怎样写?描述通讯协议的一般方法是?

2019-10-15 05:41发布

目前正在操作某模块
该某块用串口方式操作
命令格式如下
1.同步头 三个字节 固定
2.命令 一个字节
3.执行部件号码 一个字节
4.命令参数 不同的命令,参数个数不同,最多八个字节
5.校验码 是命令字节数,执行部件号码和命令参数字节数的和的异或值,一个字节

我想把这个通讯协议和发送命令的代码封装到一个C程序头文件和源文件里,该用怎么样的方式写才能达到
1.方便修改具体命令对应的值
2.方便主程序发送命令和数据
的目的?


本来我想采用结构体来统一表述之前提到的命令格式,代码如下:
typedef struct
{
Uchar SynHeader;
Uchar Cmd;
Uchar Num;
Uchar Data[8];
Uchar CheckCode;
} MoudleCmd;
#define SYN "x01X011"
//定义同步头

但是,针对不同的长度的参数表,成员DATA如何处理?针对不同的命令,CheckCode如何处理?
有没有办法在声明命令变量之前,就把同步头放在命令里?


此外,描述通讯协议,或者说描述数据结构并可以发送接收的一般方法是?

如果描述起来不方便,希望各位可以给出一些参考资料。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
Rocks
1楼-- · 2019-10-15 10:02
不固定長度的部分給你兩個建議解
1.設定結尾字元
2.宣告資料長度

另外純粹用結構來接收發送必須內容長度不變才可以
像是TCPIP每包都固定長
zhuifeng8911
2楼-- · 2019-10-15 11:48
 精彩回答 2  元偷偷看……

一周热门 更多>