协调器发送消息给终端,正常。
终端发送消息给协调器,发送一次后,就再也接收不到消息了
YiKai Chen:
有沒有抓包看看狀況
user4711142:
回复 YiKai Chen:
我做的串口透传,协调器和终端
串口透传.psd
user4711142:
回复 user4711142:
0x0000(协调器)给0xD6C7(终端)发送数据正常,
终端给协调器发送数据,显示发送出去了,但是协调器接收不到。程序和都是类似的,为什么不行?
user4711142:
回复 YiKai Chen:
查看了一下,正确时 源端口号 为0 目的端口号为0x30
不能接受数据时,源端口号为30 ,目的端口号为30。
请问这个有什么影响么?需要我把工程文件上传么?
user4711142:
回复 YiKai Chen:
这个程序完全按照zstack 2.5.1写的,没有用3.0的zcl,太麻烦了。而且documents中也没有关于新建和使用自己ID的说明,genericApp的应用更是少之又少。
user4711142:
回复 user4711142:
const cId_t MyApp_ClusterList[MYAPP_MAX_CLUSTERS] =
{MYAPP_SENDADDR_CLUSTERID,MYAPP_DTU_CLUSTERID,
};const SimpleDescriptionFormat_t MyApp_SimpleDesc =
{MYAPP_ENDPOINT_ADDR,//int Endpoint;MYAPP_PROFID,//uint16 AppProfId[2];MYAPP_DEVICEID,//uint16 AppDeviceId[2];MYAPP_DEVICE_VERSION,//intAppDevVer:4;MYAPP_FLAGS,//intAppFlags:4;MYAPP_MAX_CLUSTERS,//byteAppNumInClusters;(cId_t *)MyApp_ClusterList,//byte *pAppInClusterList;MYAPP_MAX_CLUSTERS,//byteAppNumInClusters;(cId_t *)MyApp_ClusterList//byte *pAppInClusterList;
};
endPointDesc_t MyApp_epDesc;经调试发现:只发送MYAPP_SENDADDR_CLUSTERID或者只发送MYAPP_DTU_CLUSTERID消息,时没问题。发送其中一个后,另外一个就接受不到了。
Alvin Chen:
回复 user4711142:
你自己的发送的地址的端口号不对发出不了。请看你的自己包,只有一个。
GenericApp_DstAddr.addrMode =(afAddrMode_t)Addr16Bit;
GenericApp_DstAddr.addr.shortAddr = 0x0000;
GenericApp_DstAddr.endPoint = 0;
YiKai Chen:
回复 user4711142:
正确时 源端口号 为0 目的端口号为0x30endpoint 0是ZDO層用的,應用程序不應該用端口号 为0
不能接受数据时,源端口号为30 ,目的端口号为30我看這一類数据發出來除了有mac ack,連aps ack都有,代表你的協調器收到了
user4711142:
回复 Alvin Chen:
嗯,发送的目的地址
//设置发送目的地址是这样设置MyApp_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;MyApp_DstAddr.addr.shortAddr = 0x0000;MyApp_DstAddr.endPoint = 0x30;发送的源地址为什么是0x0000?
Alvin Chen:
回复 user4711142:
发送的源地址为什么是0x0000?
这个仅仅是个举例,具体你自己去填写。