ZigBee串口介绍

来源:互联网 发布:软件销售公司经营范围 编辑:程序博客网 时间:2024/05/04 13:31

一、串口

串口数据具有以下格式:

0xFE,        DataLength, CM0, CM1, Data payload, FCS

解释:0xFE:数据帧头

DataLength:Datapayload的数据长度,以字节计,低字节在前;

CM0:命令低字节;

CM1:命令高字节;(ZTOOL软件就是通过发送一系列命令给MT实现和协议栈交互);

Data payload:数据帧具体的数据,这个长度是可变的,但是要和 DataLength一致;

FCS:校验和,从 DataLength 字节开始到 Data payload 最后一个字节所有字节的异或按字节操作。

例如: FE 06 00 02 41 42 43 44 45 46 03

0xFE

DataLength

CM0

CM1

Datapayload

FCS

FE

06

00

02

41 42 43 44 45 46

03

 

串口发给系统应用层的结构体:

typedef stuct

{

        osal_event_hdr_t  hdr;

        uint8            *msg;

}  mtOSALSerialData_t;

其中 *msg为去掉帧头和校验符的串口数据,即:06 00 02 41 42 43 44 45 46。

 

如何处理串口数据:

首先打开Project->Options,在如图1所示的Options设置对话框的Defined symbols中添加ZTOOL_P1(选择使用ZTOOL,使用MT_UartProcessZtoolData函数处理串口数据);其次在SampleApp.c的SampleApp_Init()中添加:

  MT_UartInit();                              //添加串口初始化函数

  MT_UartRegisterTaskID(SampleApp_TaskID);    //注册串口任务事件

 

执行过程:

在系统初始化过程中调用void MT_UartInit ()(该函数位于MT_Uart.c文件中),该函数中有如下两句函数:

#if defined (ZTOOL_P1) || defined (ZTOOL_P2)

  uartConfig.callBackFunc          = MT_UartProcessZToolData;

函数中使用调用MT_UartProcessZToolData()(该函数位于MT_Uart.c文件中)回调函数处理串口发来的数据。该函数对串口数据进行解包,并且设置事件消息:

          pMsg->hdr.event = CMD_SERIAL_MSG;

如果校验正确则将串口消息发送给应用处理层:

          osal_msg_send( App_TaskID, (byte *)pMsg );

因此在应用层SampleApp_ProcessEvent()(该函数位于SampleApp.c文件中)函数中添加如下语句即可进行串口数据处理:

    case CMD_SERIAL_MSG:

      Uart_IncomingDataProcessing(((mtOSALSerialData_t *)MSGpkt)->msg) //串口处理函数,根据不同的命令将串口发来的消息发送出去

     break;

注意:发来的串口数据包括:数据长度(DataLength),命令低字节(CM0),命令高字节(CM1),数据有效载荷(Data payload)。处理时应按照该顺序进行处理。


0 0
原创粉丝点击