zoukankan      html  css  js  c++  java
  • ZigBee学习二 LED点对点通信

    ZigBee学习二 LED点对点通信

    终端上电后,自动连接协调器进行组网,成功后,开始发送LED字符数据。当协调器接收到数据后,终端和协调器的LED1都开始闪烁。

    工程搭建和文件添加 步骤这里就省了。。。直接修改代码。。。

    1)修改coordinator.c文件

    因为协调器是接收终端的信息并进行相应的处理,所有只修改消息处理函数就行了

    static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
    {
      unsigned char buffer[4]="";
      switch ( pkt->clusterId )
      {
        case GENERICAPP_CLUSTERID:
          osal_memcpy(buffer,pkt->cmd.Data,3);
          if((buffer[0]=='L'))
          {
            HalLedBlink(HAL_LED_1,0,50,500);
          }else{
            HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);
          }
        break;
      }
    }

    2)修改enddevice.c文件

    uint16 GenericApp_ProcessEvent( uint8 task_id, uint16 events )
    {  ... ...

      while ( MSGpkt )
      {
        switch ( MSGpkt->hdr.event )
        {
          case ZDO_CB_MSG:  ... ...
            break;

          case KEY_CHANGE:  ... ...
            break;

          case AF_DATA_CONFIRM_CMD:  ... ...

            break;

          case AF_INCOMING_MSG_CMD:  ... ...
            break;

          case ZDO_STATE_CHANGE:
            GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
            if ( (GenericApp_NwkState == DEV_ZB_COORD)
            || (GenericApp_NwkState == DEV_ROUTER)
            || (GenericApp_NwkState == DEV_END_DEVICE) )
            {
              GenericApp_SendTheMessage();
            }
            break;

          default:
            break;
         }

          ... ...

      }

    }

    static void GenericApp_SendTheMessage( void )
    {
      char theMessageData[] = "LED";
      afAddrType_t my_DstAddr;
      my_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
      my_DstAddr.endPoint = GENERICAPP_ENDPOINT;
      my_DstAddr.addr.shortAddr = 0x0000;

      if ( AF_DataRequest( &my_DstAddr, &GenericApp_epDesc,
        GENERICAPP_CLUSTERID,
        (byte)osal_strlen( theMessageData ) + 1,
        (byte *)&theMessageData,
        &GenericApp_TransID,
        AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
      {
        // Successfully requested to be sent.
        HalLedBlink(HAL_LED_1,0,50,500);
      }else
      {
        // Error occurred in request to send.
      }
    }

  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/liushao/p/6351574.html
Copyright © 2011-2022 走看看