zoukankan      html  css  js  c++  java
  • zStack学习笔记(原创,绝对不是抄的……)

    我之前写的文章都没写上面那句,但是这篇写了,主要是因为zStack文章抄袭太严重……故此声明

    因为涉及到数据的双向交互问题,所以在这里我考虑使用协议栈来实现数据的收发。
    首先说下如何在Zstack中添加自己的任务。
    首先要利用已有的SampleApp工程,在其中添加自己的任务。
    添加任务流程如下:

    1 首先定义任务函数,函数声明如下:
    UINT16 FunctionName(byte task_id, UINT16 events);
    2 定义好了函数后再定义一个用于指定任务ID的函数,很简单:
    void Function_Init( byte task_id );

    然后在OSAL_GenericApp.c文件的tasksArr数组中添加自己的任务函数地址。因为这个数组是一个函数指针数组。
    然后在void osalInitTasks( void )函数中调用Function_Init函数,用于获取任务ID。不过我现在没发现这一步到底有什么用。

    这样就实现了自己的任务函数的添加,等待消息相应即可。

    在发送数据上,使用AF_DataRequest函数实现数据发送。这个函数的参数比较多,有点麻烦。
    数据的接受上,在GenericApp_ProcessEvent回调函数中响应AF_INCOMING_MSG_CMD消息。这里zstack会默认调用一个函数,是GenericApp_MessageMSGCB。在这里处理根据afIncomingMSGPacket_t参数来进行数据的处理。
    这个结构体的声明如下:
    typedef struct
    {
    osal_event_hdr_t hdr;
    uint16 groupId;
    uint16 clusterId;
    afAddrType_t srcAddr;
    byte endPoint;
    byte wasBroadcast;
    byte LinkQuality;
    byte SecurityUse;
    uint32 timestamp;
    afMSGCommandFormat_t cmd;
    } afIncomingMSGPacket_t;
    真正的数据其实是在成员变量cmd中,afMSGCommandFormat_t结构体的声明如下:
    typedef struct
    {
    byte TransSeqNumber;
    uint16 DataLength; // Number of bytes in TransData
    byte *Data;
    } afMSGCommandFormat_t;
    就这样,可以通过这种方式获取你所想要的数据。

    zStack的串口通信使用协议栈的函数来实现串口功能的开启和关闭。
    另外就是zStack的波特率设置其实很有意思,有这么一串宏定义:
    #define HAL_UART_BR_1200 0x00
    #define HAL_UART_BR_2400 0x01
    #define HAL_UART_BR_4800 0x02
    #define HAL_UART_BR_9600 0x03
    #define HAL_UART_BR_19200 0x04
    #define HAL_UART_BR_31250 0x05
    #define HAL_UART_BR_38400 0x06
    #define HAL_UART_BR_57600 0x07
    #define HAL_UART_BR_115200 0x08
    我想说的就是,实在是太可爱了~
    另外就是在波特率的具体设定上,还是参看代码比较好。

  • 相关阅读:
    Maven核心简析
    块/文件/对象存储对比性概述
    Java SE-基本数据类型对应包装类
    Maven+eclipse快速入门
    IaaS、PaaS、SaaS、CaaS、MaaS五者的区别
    Collections.shuffle()源码分析
    java集合继承关系图
    ArrayList和LinkedList的区别
    ArrayList的实现原理
    session以及分布式服务器session共享
  • 原文地址:https://www.cnblogs.com/matrix-r/p/3405493.html
Copyright © 2011-2022 走看看