基于ZigBee Mesh网络的无线串口设计
Z—Stack采用操作系统的思想来构建,采用任务轮循机制,当各层初始化之后,系统进入低功耗模式,当任务有事件发生时,唤醒系统,开始进入中断处理任务事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。Z—Stack的工作流程如图7所示。本文引用地址:https://www.eepw.com.cn/article/156264.htm
3.3 无线串口程序流程
因为Z—Stack是采用任务轮循机制,GenericApp是属于其中的一个任务,在文件GenericApp.c中的任务初始化函数GenericApp_Init()中添加串口初始化代码,在GenericApp_ProcessEven()函数中添加无线串口收发事件Serial_RecEven和Serial_TranEven的处理函数。图8和图9是GenericApp_Init()函数流程图和GenericApp_ProcessEven()函数流程图。
图中初始化NV Flash是用以储存其他节点网络地址名字对应表。
当节点上电加入ZigBee网络后,便会执行GenericApp_Init()函数,初始化串口,并向网络中的其他节点以广播的方式发送其网络地址和名字。
当网络中的其他节点接收到数据时,便会触发接收数据事件,GenericApp_ProcessEven()函数判断是串口接收数据命令还是储存网络地址命令,如果是前者,便将数据写到串口;如果是后者则先判断是否来自于广播方式发送来的数据:若是则储存该网络地址和名字,并且以单播的方式回馈本节点的网络地址,保证网络中的各个节点都知道其他节点的地址和名字;若不是就储存该网络地址和名字,不用反馈本节点的网络地址和名字。
当GenericApp_ProcessEven()函数检测到Serial_TranEven事件发生时,便读串口并将数据按照约定的格式发送出去。
评论