TIwilliam hill官网
直播中

刘建军

7年用户 162经验值
私信 关注

协调器和路由器发广播消息终端设备收不到,但是终端设备发广播消息路由器和协调器都能收到,这是什么原因?

本帖最后由 一只耳朵怪 于 2018-5-24 11:32 编辑

我在用zstack开发时碰到这样一个问题,想请教下这是什么原因?
测试环境::一个协调器,一个路由器,一个终端设备,zstack版本是ZStack-CC2530-2.5.1a。
组网的方式是:协调器下挂路由器,路由器下挂终端设备,测试每个设备的广播消息是否发送到其他两个设备。
测试发现协调器和路由器发广播消息终端设备都收不到广播消息,但是终端设备发广播消息路由器和协调器都能收到。如果改下组网方式,把路由器和终端设备都挂在协调器下,测试每个设备发广播消息另外两个设备都能收到广播消息。
请问这是为什么呢?
广播消息发送的代码如下:
    afAddrType_t dstAddr;
    char msgData[16];

    dstAddr.addr.shortAddr = 0xffff;
    dstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
    dstAddr.endPoint = DEVICE_ENDPOINT;
   
    AF_DataRequest(&dstAddr, &CModule_epDesc,
        CMODULE_CLUSTERID,
        (byte)osal_strlen(msgData) + 1,
        (byte *)&msgData,
        &CModule_TransID,
        AF_DISCV_ROUTE, AF_DEFAULT_RADIUS);

回帖(8)

李果

2018-5-22 02:55:02
你在终端设备的POLL_RATE设置了多少?
有抓包的数据吗?
举报

刘建军

2018-5-22 03:11:01
引用: wenlonghbo 发表于 2018-5-22 02:55
你在终端设备的POLL_RATE设置了多少?
有抓包的数据吗?

W好,很高兴看到您的回复。
我的POLL_RATE设置如下。后来我把-DRFD_RCVC_ALWAYS_ON设置为TRUE,把-DRFD_RCVC_ALWAYS_ON设置为TRUE之后没有加POWER_SAVING NWK_AUTO_POLL这两个宏定义。终端设备可以收到广播消息,但是很奇怪的是协调器发一次广播消息,终端设备会收到两次或者三次相同的广播消息。请问是不是哪里设置的有问题呢?
还想请教下用sniffer packet抓包的时候cc2530 flash的程序被仿真器下载的抓包程序覆盖了,这样其他设备还能通过网络地址发数据到抓包设备吗?
/* The number of milliseconds to wait between data request polls to the coordinator. */
-DPOLL_RATE=1000

/* This is used after receiving a data indication to poll immediately
 * for queued messages...in milliseconds.
 */
-DQUEUED_POLL_RATE=100

/* This is used after receiving a data confirmation to poll immediately
 * for response messages...in milliseconds
 */
-DRESPONSE_POLL_RATE=100

/* This is used as an alternate response poll rate only for rejoin request.
 * This rate is determined by the response time of the parent that the device
 * is trying to join.
 */
-DREJOIN_POLL_RATE=440
举报

李果

2018-5-22 03:20:21
引用: 想变胖的瘦子 发表于 2018-5-22 03:11
W好,很高兴看到您的回复。
我的POLL_RATE设置如下。后来我把-DRFD_RCVC_ALWAYS_ON设置为TRUE,把-DRFD_RCVC_ALWAYS_ON设置为TRUE之后没有加POWER_SAVING NWK_AUTO_POLL这两个宏定义。终端设备可以收到广播消息,但是很奇怪的是协调器发一次广播消息,终端设备会收到两次或者三次相同的广播消息。请问是不是哪里设置的有问 ...

因为当路由器收到广播数据以后,也会转发,所以在终端设备上,你会看到收到2条广播数据!
举报

刘建军

2018-5-22 03:32:50
引用: wenlonghbo 发表于 2018-5-22 03:20
因为当路由器收到广播数据以后,也会转发,所以在终端设备上,你会看到收到2条广播数据!

W,非常感谢您的回复,还有一个现象想麻烦您帮我确认下是否正常?
网路中有一个协调器,一个路由器挂在协调器下,一个终端设备也是挂在协调器下。
先通过协调器发送广播消息,内容为123456,我通过串口打印的数据如下,终端设备收到了两条相同的从协调器发来的广播消息,但是从rssi值可以看出-25dbm是协调器的,-61dbm是路由器转发的,因为我是把协调器和终端设备放在一起的,路由器隔的比较远。这和您说的路由器会转发一致。
bcast by:0000  data:123456  rssi: -25dbm
bcast by:0000  data:123456  rssi: -61dbm
再用路由器发送广播消息,内容为AAAAA,终端设备也收到了两条相同的从路由器发来的广播消息,如下所示,这也和您说的一致。
bcast by:9471  data:AAAAA  rssi: -63dbm
bcast by:9471  data:AAAAA  rssi: -23dbm
现在我把路由器断电,再从协调器发广播消息123456,终端设备收到了3条一样的广播消息,如下所示,这是为什么呢?是不是有问题呢?
bcast by:0000  data:123456  rssi: -23dbm
bcast by:0000  data:123456  rssi: -23dbm
bcast by:0000  data:123456  rssi: -24dbm
另外一个问题,如果我从终端设备发广播消息BBBBBB,协调器和路由器都只会收到一次广播消息,为什么终端设备发的广播路由器不会再转发给协调器呢?
bcast by:C45C  data:BBBBBB  rssi: -23dbm
举报

更多回帖

发帖
×
20
完善资料,
赚取积分