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

TI 15.4stack,非信标通讯中,sensor有时候无法接收到collector的信息?

sdk版本是2.4,例子有修改。

sensor和collector非信标模式通讯,一个collector连接了10sensor,sensor发送数据后,collector会及时回复信息。通讯48小时左右,其中个别sensor会出现连续1-3包左右的数据丢失。然后恢复正常通讯,抓包信息,排除掉线可能,sensor:数据ACK成功,poll回调成功,无数据回调触发。

因为collector每次回复,都是带一个时间,sensor时间没有更新,

使用过的处理方式:延长collector数据保留时间,加大sensor,poll次数,poll为500.

Alvin Chen:

偶尔丢包属于正常现象,建议你自己加逻辑去优化。当收到ApiMac_status_noAck,自己重新发送上次失败的信息。

user5322468:

回复 Alvin Chen:

ApiMac_status_noAck我是定时去发的,没有立即发送。

sensor不是ApiMac_status_noAck,sensor发送数据,接收到ack,然后发送poll,poll回调成功,ack也是正确,应该进入data。我现在是打印信息sensor没有进入到data,去取collector发送过来的数据

Alvin Chen:

回复 user5322468:

为了保证稳定性不建议客户去操作STACK的逻辑。dataCnfCB里面现在ApiMac_status_noAck就可以尝试重发一下。我回过你之前的帖子,你应该是不太在意低功耗,为什么不设置SENSOR为CONFIG_RX_ON_IDLE为true,即常在线设备来保证通讯的实时性。

user5322468:

回复 Alvin Chen:

大哥,如果不考虑功耗,我就一直打开poll了。

sensor发送数据,应该首先返回dataCnfCB,失败重发,成功,然后启动poll,poll成功,说明collector回复,后在dataInfCb。

我现在是没有进入到dataInfCb。我的数据操作都在dataInfCb里面。

这是不是说明,collector没有发送成功呀!!!!我senmsg函数返回true不就是成功吗?而且我在dataCnfCB里面都加了重发机制

Alvin Chen:

回复 user5322468:

不是很理解你的意思 我有点晕。。。

collector/sensor发送之后会进入dataCnfCB去处理 MAC Data Confirm callback.

“sensor不是ApiMac_status_noAck,sensor发送数据,接收到ack,然后发送poll,poll回调成功,ack也是正确,应该进入data。我现在是打印信息sensor没有进入到data,去取collector发送过来的数据”

你现在偶尔失败是抓包collector发送给sensor的数据有ACK返回,但是sensor 的dataIndCB没有反应我的理解对吗?

user5322468:

回复 Alvin Chen:

是的,sensor的dataIndCB里面,没有反应。我的数据解析都在里面处理的额。

Alvin Chen:

回复 user5322468:

能否上传抓包文件,并标注出现问题的位置。

user5322468:

回复 Alvin Chen:

跑了4天出现了三次,很难抓到。通讯大概就是

sensor 发送
ack
————————————————————-》‘’collector发送‘’(–接收sensor的data状态回调,发送数据)
sensor poll
ack
sensor无数据回调

赞(0)
未经允许不得转载:TI中文支持网 » TI 15.4stack,非信标通讯中,sensor有时候无法接收到collector的信息?
分享到: 更多 (0)