木易-357428 发表于 2015-11-12 21:41:20

NUCLEO-L476RG板开发笔记----串口协议解析方案

NUCLEO-L476RG板子已经到我手里一个星期了,但是现在项目忙的紧,没时间弄它。打算再过半个月到一个月,休假的时候研究一下。看着介绍,觉得这个芯片的性能真的不错,有心在以后的项目中,看看能不能用到。
目前暂时没时间研究,就先分享一下板子以外的,关于串口协议解析的一点小技巧吧(只针对定长的协议)。

先定义一下串口协议的格式:

#program pack(1)//一个字节对齐   伪指令
typedefstructRX_STRUCT
{
   uint16_trxhead;//协议头
   uint8_tlenght;//协议长度
   uint8_tcmd;    //协议命令
   uint8_t data;   //协议数据
   uint16_tcheck_data;//协议校验   
}RX_STRUCT;

#program pack()//取消一个字节对齐

typedef unionRX_DATA
{
    RX_STRUCT    rx;
    rx_data_buf;
}

/****************/
协议格式定义完毕
解析数据的时候,可以这么使用
RX_DATArx_data;

当串口来数据的时候:
memcpy(rx_data.rx_data_buf,serial_data,sizeof(RX_STRUCT));

然后使用结构体,即可解析数据了。

if(rx_data.rx.rxhead == RX_HEAD)
{
      switch(rx_data.rx.cmd)
      {
                ...
      }
}

一点小技巧,分享给大家。
NUCLEO-L476RG板开发笔记,过一段时间补上。















mark0668 发表于 2015-11-12 22:10:22

感谢分享

alles_ok>>0_0<< 发表于 2015-11-12 22:45:10

感谢分享

embedhome 发表于 2015-11-12 23:30:34

谢谢分享

disheng4688 发表于 2015-11-13 08:52:29

学习                  

风子 发表于 2015-11-13 08:57:44


页: [1]
查看完整版本: NUCLEO-L476RG板开发笔记----串口协议解析方案