我是靠谱客的博主 积极鲜花,最近开发中收集的这篇文章主要介绍Zigbee应用开发 协调器控制多个终端协调器控制多个终端,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

协调器控制多个终端

      功能要求:

           协调器通过串口向终端发送控制命令

           发送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;
    }
}

 

最后

以上就是积极鲜花为你收集整理的Zigbee应用开发 协调器控制多个终端协调器控制多个终端的全部内容,希望文章能够帮你解决Zigbee应用开发 协调器控制多个终端协调器控制多个终端所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部