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.
      }
    }

  • 相关阅读:
    88、使用tensorboard进行可视化学习,查看具体使用时间,训练轮数,使用内存大小
    88、展示Tensorflow计算图上每个节点的基本信息以及运行时消耗的时间和空间
    关于实时监听输入框的值变化
    再谈javascript函数节流
    HTML5离线缓存Manifest
    javascript判断浏览器支持CSS3属性
    关于移动web开发过程中的”点透“问题
    跨域解决方案之HTML5 postMessage
    最精简的金额格式化
    Grunt usemin前端自动化打包流程
  • 原文地址:https://www.cnblogs.com/liushao/p/6351574.html
Copyright © 2011-2022 走看看