我之前写的文章都没写上面那句,但是这篇写了,主要是因为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
我想说的就是,实在是太可爱了~
另外就是在波特率的具体设定上,还是参看代码比较好。

zStack学习笔记(原创,绝对不是抄的……)的更多相关文章

  1. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

  2. Z-Stack学习笔记

    Technorati 标签: Z-Stack profile 1. 栈配置profile 栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置.ZigBee联盟定义了这些由栈配置组成的栈参 ...

  3. NXP NFC移植及学习笔记(原创)

    NFC功能介绍 NFC 目前使用的三种功能: 1. P2P模式:基于LLCP协议的基础上,以NDEF数据交换格式来通信. 2. 读写模式:当作为读卡器,对NFC Tag的读写. 3. 卡模拟模式:模块 ...

  4. Angular源代码学习笔记-原创

    时间:2014年12月15日 14:15:10 /** * @license AngularJS v1.3.0-beta.15 * (c) 2010-2014 Google, Inc. http:// ...

  5. Python爬虫框架Scrapy学习笔记原创

     字号 scrapy [TOC] 开始 scrapy安装 首先手动安装windows版本的Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twi ...

  6. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. [原创]java WEB学习笔记52:国际化 fmt 标签,国际化的总结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. Java坦克大战 (五) 之产生敌方坦克和爆炸效果

    本文来自:小易博客专栏.转载请注明出处:http://blog.csdn.net/oldinaction 在此小易将坦克大战这个项目分为几个版本,以此对J2SE的知识进行回顾和总结,希望这样也能给刚学 ...

  2. KVM(三)I/O 全虚拟化和准虚拟化

    在 QEMU/KVM 中,客户机可以使用的设备大致可分为三类: 1. 模拟设备:完全由 QEMU 纯软件模拟的设备. 2. Virtio 设备:实现 VIRTIO API 的半虚拟化设备. 3. PC ...

  3. PYTHON设计模式学习(3):Singleton pattern

    参考了其他的博客:http://ghostfromheaven.iteye.com/blog/1562618 #-*- encoding=utf-8 -*- print '-------------- ...

  4. Mysql中大表添加索引的办法

    Hash索引与 Btree索引的区别http://database.51cto.com/art/201010/229525.htm Creating Indexes/Sorting on very l ...

  5. C#给IIS添加禁止IP限制

    /// <summary> /// 给IIS添加禁止IP限制 /// 仅针对iis 7及以上版本 /// 首先需要引入Microsoft.Web.Administration.dll // ...

  6. 使用厂商MIB库查找设备OID值 并实施监控的方法

    http://chuansong.me/n/2700132 https://wenku.baidu.com/view/eeaeb1d680eb6294dd886cc7.html

  7. 阿里云ECS(Centos7.2 64bit)安装Docker

    购买了阿里云的ECS服务器后,一直在尝试安装Docker,使用过Ubuntu和CentOS系统,也一直在查找文档,但都是Docker安装完成后却无法访问,一直在ECS上不停的更换系统盘 再次按官方文档 ...

  8. ubuntu下使用AutoKey实现ARK的自动跑/攻击/自动配种

    脚本1: if not store.has_key("ark_run"): store.set_value("ark_run", 1) keyboard.pre ...

  9. B - ACM小组的古怪象棋 【地图型BFS+特殊方向】

    ACM小组的Samsara和Staginner对中国象棋特别感兴趣,尤其对马(可能是因为这个棋子的走法比较多吧)的使用进行深入研究.今天他们又在 构思一个古怪的棋局:假如Samsara只有一个马了,而 ...

  10. Spring Cloud 常用依赖

    <!-- 将微服务provider侧注册进eureka --> <dependency> <groupId>org.springframework.cloud< ...