协调器控制多个终端
功能要求:
协调器通过串口向终端发送控制命令
发送1 则终端1 的D8灯亮 发送 2 则 终端2 的灯亮 发送 0 则 俩个终端都灭
实现过程:
当网络状态发生改变时,通过串口打印一串消息用来分辨串口调试对应着那种类型的Zigbee
终端编程:
当接收到无线消息到达后,对信息进行判断
终端1 ,第一个数据为 1 ,点亮 D8。 0 关闭 D8
终端2,第一个数据为2,点亮D8。0 关闭 D8
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60// 添加头文件 #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);)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19void 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; } }
最后
以上就是积极鲜花最近收集整理的关于Zigbee应用开发 协调器控制多个终端协调器控制多个终端的全部内容,更多相关Zigbee应用开发内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复