(支持原创,如需转载,请注明地址:http://blog.sina.com.cn/litianping0709
举个例子,在协调器中我们需要利用PC给zstack发出命令需要其执行相应的命令时,这个时候我们只要在协调器的编译项加上ZTOOL_P1 MT_TASK两个选项即可,如果这个时候如果需要MT层和应用层进行交互处理用户数据(具体用户数据的格式在zstack中的串口文档中有定义,大家可以自行查看),就必须在应用层中加入
case MT_SYS_APP_MSG:
(具体为什么加这个如果还不清楚把zstack OSAL运行机制搞清楚之后再开发吧。)
这个时候才能串口发送的数据经过MT层处理后送到我们的应用层,这是接收过程,发送过程直接调用HalUARTWrite()函数即可。
(2)自己的串口应用,与zstack命令格式无关,但不想自己配置串口,想偷懒:这种情况下也很简单,与上述编译项不同的是,此时需要加入的编译项为:MT_TASK ZAPP_P1,当中的串口号根据实际情况而定,这个时候只要加入编译项其实就行了,在应用过程中如果想在应用层处理串口的数据,和上述情况类似,这时候需要在应用层中加入的东西有:
#include "SPIMgr.h"头文件
....
#if defined (ZAPP_P1)
.....
case SPI_INCOMING_ZAPP_DATA:
......
(需要主要注意的是一个串口不能同时实现上面的两个功能,一定要实现上述ZAPP_Px编译和ZTOOL_Px同时存在的话,那么x一定不能相同,即要使用两个不同的串口,否则会出现冲突。)
(3)可能瞧不起zstack定义好的串口,自己单独写一个玩玩,或者想另外加一个串口实现双串口功能,这个很简单,大家看看serialapp例子就行,我不细说。
联系客服