ZigBee Home Automation --- zstack串口应用总结

zstack串口应用总结 
最近总是碰到很多人问我串口的问题,很多人会纠结于一些细节性的东西,刨根问底当然好,但在实际的开发过程中需要你会用,不可能给你那么的多的时间学那么多无关的东西,总之一句话:开发注重于框架的掌握,具体在开发中遇到的细节问题再拿出刨根问底的功夫出来,这样才会事半功倍。 
(支持原创,如需转载,请注明地址:http://blog.sina.com.cn/litianping0709
其实zstack的串口应用起来相当简单,由于时间关系,我对串口的应用只做一个简单的讲解,给大家一个框架,实际应用中大家自己酌情掌握,当然有错的话希望大家指正,只是个人理解。 
在zstack中,串口应用主要有三种方式: 
(1)与zstack交互进行通信:需要考虑到系统通信的数据格式,这种应用一般更加侧重于与zstack交互。 
举个例子,在协调器中我们需要利用PC给zstack发出命令需要其执行相应的命令时,这个时候我们只要在协调器的编译项加上ZTOOL_P1 MT_TASK两个选项即可,如果这个时候如果需要MT层和应用层进行交互处理用户数据(具体用户数据的格式在zstack中的串口文档中有定义,大家可以自行查看),就必须在应用层中加入 
case MT_SYS_APP_MSG: // Z-Architect Messages 
(具体为什么加这个如果还不清楚把zstack OSAL运行机制搞清楚之后再开发吧。) 
这个时候才能串口发送的数据经过MT层处理后送到我们的应用层,这是接收过程,发送过程直接调用HalUARTWrite()函数即可。 
(2)自己的串口应用,与zstack命令格式无关,但不想自己配置串口,想偷懒:这种情况下也很简单,与上述编译项不同的是,此时需要加入的编译项为:MT_TASK ZAPP_P1,当中的串口号根据实际情况而定,这个时候只要加入编译项其实就行了,在应用过程中如果想在应用层处理串口的数据,和上述情况类似,这时候需要在应用层中加入的东西有: 
#include "SPIMgr.h"头文件 .... 
#if defined (ZAPP_P1) 
SPIMgr_RegisterTaskID(SampleApp_TaskID);//在MT层注册 SPIMgr_ZAppBufferLengthRegister(7); // BUFFER大小 #endif ..... 
case SPI_INCOMING_ZAPP_DATA: 
Bindnode_SerialMSGCB(MSGpkt);//自己的串口数据处理函数 #if defined(ZAPP_P1) 
SPIMgr_AppFlowControl ( SPI_MGR_ZAPP_RX_READY );//流控制 #endif break; ...... 
这是最主要的三步,完成上述添加,大家就可以使用串口了。 
(需要主要注意的是一个串口不能同时实现上面的两个功能,一定要实现上述ZAPP_Px编译和ZTOOL_Px同时存在的话,那么x一定不能相同,即要使用两个不同的串口,否则会出现冲突。) 
(3)可能瞧不起zstack定义好的串口,自己单独写一个玩玩,或者想另外加一个串口实现双串口功能,这个很简单,大家看看serialapp例子就行,我不细说。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值