TI中文支持网
TI专业的中文技术问题搜集分享网站

zigbee中的MAC通讯问题,调了好久,不懂问题在哪里难受

板子是完全兼容TI的,在单播试验中,协调器(接受方)接收到数据即原样显示,终端代码。终端代码改动如下:添加头文件#include<string.h>, 自定义一个事件  #define MAC_EVENT                   0x0010
uint8 DestMac[8]={0xEA,0X02,0X2B,0X10,0X00,0X4B,0X12,0X00};//0X00124B00 10 2B 02 EA   通讯目标的MAC地址

按下按键2时: 
if ( keys & HAL_KEY_SW_2 )
    {

     ZDP_NwkAddrReq(DestMac, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 );//让我们的MAC地址对应的模块把自己当额网络短地址回复给我
     osal_start_timerEx( TestRoutine_TaskID,
                       MAC_EVENT,
                     30 );              
    }
按下按键触发事件时:
if ( events & MAC_EVENT )
  {
     char theMessageData[] ="jacky";

      TestRoutine_DstAddr.addrMode = (afAddrMode_t)Addr64Bit;
//   // TestRoutine_DstAddr.addr.shortAddr = 0x0000;//接收模块的网络地址
      memcpy(TestRoutine_DstAddr.addr.extAddr,DestMac,8);

    // Take the first endpoint, Can be changed to search through endpoints
    TestRoutine_DstAddr.endPoint =TestRoutine_ENDPOINT ;//接收模块的端点房间号

      //TestRoutine_epDesc结构体 端点描述符有源端点的信息,也是10

     if(AF_DataRequest( &TestRoutine_DstAddr, &TestRoutine_epDesc,
                     TestRoutine_CLUSTERID,//目标端点镞0x0001
                     (byte)osal_strlen( theMessageData ) + 1,//发送字符串的长度
                     (byte *)&theMessageData,//字符串内容数组的首地址
                     &TestRoutine_TransID,
                     AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ))
     {
         HalLcdWriteString("mac send fail",HAL_LCD_LINE_7);
     }
     else
     {
         HalLcdWriteString("mac send ok",HAL_LCD_LINE_8);
     }

    return (events ^ MAC_EVENT);
  }

实验结果,按下按键2通讯不了(仿真时按键出发事件有效),抓包无数据。MAC通讯不就这样就可以了吗,是我代码问题还是板子的问题?调了几天了,难受,希望能得到帮助,谢谢。

VV:

zigbee本质上所有的通信都是基于16bit短地址的,就像IP地址通信一样。

虽然在应用层可以可以使用长地址发送数据,但是也是在底层通过长地址查询短地址,如果查不到就无法发送出去。

你有把短地址一直保存吗?

赞(0)
未经允许不得转载:TI中文支持网 » zigbee中的MAC通讯问题,调了好久,不懂问题在哪里难受
分享到: 更多 (0)