深圳做网站在去那备案/谷歌seo价格
协调器控制多个终端
功能要求:
协调器通过串口向终端发送控制命令
发送1 则终端1 的D8灯亮 发送 2 则 终端2 的灯亮 发送 0 则 俩个终端都灭
实现过程:
当网络状态发生改变时,通过串口打印一串消息用来分辨串口调试对应着那种类型的Zigbee
终端编程:
当接收到无线消息到达后,对信息进行判断
终端1 ,第一个数据为 1 ,点亮 D8。 0 关闭 D8
终端2,第一个数据为2,点亮D8。0 关闭 D8
// 添加头文件
#include "hal_board_cfg.h"void ()
{if(){while(){case ZDO_STATE_CHANGE:SampleApp_NwkState = (devStates_t)(MSGpkt -> hdr.status);if((SampleApp_NwkState == DEV_ZB_COORD)||(SampleApp_NwkState == DEV_ROUIER)||(SampleApp_NwkState == DEV_END_DEVICE)){if(zgDeviceLogicalType == ZG_DEVICETYPE_COORDINATOR) // 协调器{HalUARTWrite(0, "uart is ok \n", strlen("uart is ok \n"));} else if(zgDevicelLogicalType == ZG_DEVICETYPE_ENDDEVICE){HalUARTwrite(0, "I am endevice \n", strlen("I am enddevice \n"));}}else{}break;}}
}void SampleApp_MessageMSGCB (afIncomingMSGPacket_t *pkt)
{uint16 flashTime;switch(pkt -> clusterId){case SAMPLEAPP_PERIODIC_CLUSTERID:HalUARTwrite(0, pkt->cmd.Data, pkt->cmd.DataLength);if('1' == pkt -> cmd.Data[0]){HAL_TURN_ON_LED2();}else if('0' == pkt -> cmd.Data[0]){HAL_TURN_OFF_LED2();}break;}
}// ual_board_cfg.h
#if ( defined (HAL_BOARD_CC2503EB_REV17) && !defined(HAL_PA_LNA) && !defined(HAL_PA_LNA_CC2590))
#define HAL_TURN_OFF_LED2() st(LED2_SBIT = LED2_POLARITY(1);)#define HAL_TURN_ON_LED2() st(LED2_SBIT = LED2_POLARITY(0);)
void SampleApp_MessageMSGCB (afIncomingMSGPacket_t *pkt) // 第二个终端
{uint16 flashTime;switch(pkt -> clusterId){case SAMPLEAPP_PERIODIC_CLUSTERID:HalUARTwrite(0, pkt->cmd.Data, pkt->cmd.DataLength);if('2' == pkt -> cmd.Data[0]){HAL_TURN_ON_LED2();}else if('0' == pkt -> cmd.Data[0]){HAL_TURN_OFF_LED2();}break;}
}