在case ZDO_STATE_CHANGE:中如果是终端则调用 AfSendAddrInfo();
AfSendAddrInfo();中利用NLME_GetShortAddr();函数得到短地址,发送至协调器,发送成功。
协调器将收到的数据显示到串口上,显示短地址为0xFF,0xFE;
利用addr = ((SerialApp_TxBuf[1]<<8) | SerialApp_TxBuf[2]);方式得到短地址,SerialApp_TxBuf[1]为0xFF,SerialApp_TxBuf[2]=0xFE
然后
rv_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
rv_DstAddr.endPoint = SERIALAPP_ENDPOINT;
rv_DstAddr.addr.shortAddr = addr;
调用
afStatus_SUCCESS == AF_DataRequest(&rv_DstAddr,
(endPointDesc_t *)&SerialApp_epDesc,
SERIALAPP_CLUSTERID,
7, SerialApp_TxBuf,
&SerialApp_MsgID, 0, AF_DEFAULT_RADIUS)
其中:
const endPointDesc_t SerialApp_epDesc =
{
SERIALAPP_ENDPOINT,
&SerialApp_TaskID,
(SimpleDescriptionFormat_t *)&SerialApp_SimpleDesc,
noLatencyReqs
};
const SimpleDescriptionFormat_t SerialApp_SimpleDesc =
{
SERIALAPP_ENDPOINT, // int Endpoint;
SERIALAPP_PROFID, // uint16 AppProfId[2];
SERIALAPP_DEVICEID, // uint16 AppDeviceId[2];
SERIALAPP_DEVICE_VERSION, // int AppDevVer:4;
SERIALAPP_FLAGS, // int AppFlags:4;
SERIALAPP_MAX_CLUSTERS, // byte AppNumInClusters;
(cId_t *)SerialApp_ClusterList, // byte *pAppInClusterList;
SERIALAPP_MAX_CLUSTERS, // byte AppNumOutClusters;
(cId_t *)SerialApp_ClusterList // byte *pAppOutClusterList;
};
这两者协调器和终端应该是一样的。
在无线消息处理函数中,将消息发送到串口上,结果终端串口上并没有消息显示,原先设定的返回值也没有返回。即终端并没有收到协调器发送的信息
问题出到哪里
VV:
终端设备上面的poll rate设置成了多少?不要设置成0