Part Number:CC2538
如题,两个终端设备入网后,通过MAC地址发送数据,无法通信。
代码如下:
其中exAddress2是另外一个终端设备的IEEE地址。
GenericApp_DstAddr.addrMode = (afAddrMode_t)Addr64Bit;
memcpy(GenericApp_DstAddr.addr.extAddr,exAddress2,8);
// Take the first endpoint, Can be changed to search through endpoints
GenericApp_DstAddr.endPoint = GENERICAPP_ENDPOINT;
char theMessageData[] = "Hello world";
AF_DataRequest( &GenericApp_DstAddr, &GenericApp_epDesc,
GENERICAPP_CLUSTERID,
(byte)osal_strlen( theMessageData ) + 1,
(byte *)&theMessageData,
&GenericApp_TransID,
AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) ;
Kevin Qiu1:
将抓包文件传上来看一下,一般建议使用短地址来发送数据,为什么要使用IEEE地址
,
今天你自律了吗:
file:///C:/Users/CUser/Desktop/ubiqua/endDevice.rar
,
今天你自律了吗:
都一样,,,我尝试用短地址通信也是一样的。
,
今天你自律了吗:
只能终端设备发给协调器,协调器发给终端设备
,
今天你自律了吗:
能回复一下我嘛,有点急。
,
今天你自律了吗:
在吗在吗!!!
,
YiKai Chen:
你調用AF_DataRequest後回傳值是什麼?確定設備已經入網了才做AF_DataRequest嗎?
,
Kevin Qiu1:
抓包文件可以通过下面的插入框来上传
,
今天你自律了吗:
对的,就是已经入网之后才发送的。
,
今天你自律了吗:
communications.rar
,
今天你自律了吗:
我上传了我今天用短地址发送数据的抓包文件,您可以帮我看看嘛!!
,
Kevin Qiu1:
看抓包信息另一个终端已经离开网络了,所以不能收到数据
,
今天你自律了吗:
这个我看到了,但是为啥我一发数据给另外一个终端,另外一个终端就会离开网络呢?这是什么原因呢?
,
今天你自律了吗:
在的话,能帮我解答一下吗!!
,
今天你自律了吗:
我不发数据给它,它就不会掉线,一发数据就掉线,这怎么回事呀。
,
Kevin Qiu1:
从抓包数据中不能看到为什么掉线,掉线以后是否还会重新加入网络,是否开启了 NV_RESTORE
掉线的原因可能有收到强干扰或者距离过远,从抓包数据看RSSI值说明不属于这两种情况
可能是另一个终端给协调器发送数据时影响到了,你用的CC2538 RAM和flash多大,内存不够也是可能的
另外建议你使用最新的zstack3.0.2来开发:https://www.ti.com.cn/tool/cn/Z-STACK
,
今天你自律了吗:
好的谢谢
,
今天你自律了吗:
但是两个终端通信,不是需要链接密钥保护数据安全嘛?难道用的是信任中心链接密钥?
,
YiKai Chen:
设备入网時协调器會透過信任中心链接密钥加密网络密钥傳送給终端,接下來所有的终端通信都會被网络密钥加密,這部份建議你讀一下Zigbee core spec.
,
今天你自律了吗:
因为我看很多书和论文都说的有链接密钥的情况下,用链接密钥加密。
,
今天你自律了吗:
你所说的这个zigbee corespec哪里能找到呢。
,
YiKai Chen:
Zigbee core spec.
,
今天你自律了吗:
现在还是无法通信,抓包可以抓到数据的源地址和目标地址分别是通信的两个终端,但是好像协调器无法路由,所以数据发不到另外一个终端(-DRFD_RCVC_ALWAYS_ON=TRUE)。协调器路由还需要配置嘛?
,
今天你自律了吗:
communicate.rar
,
YiKai Chen:
你是如何發送数据?解釋一下發送了什麼数据,可以把你的程序貼上來嗎?