问题:终端发送广播数据的同时,自己也会收到数据,而且接收地址是变化,求解?
不明白终端接收到的数据到底是从哪里发来的?附上图片,请高手指导
还有如果想让终端低功耗休眠,是不是应该把RFD_RCVC_ALWAYS_ON=FALSE,并且宏定义POWER_SAVING呢?
如此一来终端就只能通过定时器或者外部中断醒来执行某任务了吧,我按照以上的设置,终端就只能发送数据,
接收不到任何数据了,有办法实现在低功耗休眠模式下也可以随时接收数据吗?
不是太懂但稍微说下我的看法,欢迎指正
1、“本想实现终端定时给路由器发送数据,用广播的方式,路由器能够成功接收,但是终端自身也会同时接收到数据”
因为你使用的是广播的形式,所以同一网内的都能收到;终端发出的数据最好是点播,这样有目的性,减轻网络负担。
路由器可以选择组播或广播的形式发送相同的数值,如果数据不同也请用点播。
2、“终端就只能发送数据,接收不到任何数据了,有办法实现在低功耗休眠模式下也可以随时接收数据吗?”
终端是可以休眠的,休眠后可以通过定时来唤醒,定时周期依据系统的需要自己设置,期间的发送过来的数据会保存在路由器节点,终端醒来后去查询有没有自己的数据,或者发送传感器数据,或者发送周期的心跳包。
进来看看
多谢大侠指点,学习了
还是有一些小疑问
1、“因为你使用的是广播的形式,所以同一网内的都能收到;终端发出的数据最好是点播,这样有目的性,减轻网络负担。
路由器可以选择组播或广播的形式发送相同的数值,如果数据不同也请用点播。”
也就是说终端发广播数据,自身接收到是正常的吗?不过我的截图里圈出来的部分是表示接收数据来源的地址吧,每接收一次数据
shortAddr不变,而extAddr都有变化。按道理不是应该一直是终端自己本身的地址吗?怎么会变化呢?
2、“终端是可以休眠的,休眠后可以通过定时来唤醒,定时周期依据系统的需要自己设置,期间的发送过来的数据会保存在路由器节点,终端醒来后去查询有没有自己的数据,或者发送传感器数据,或者发送周期的心跳包。”
我查了一点资料,介绍说预编译POWER_SAVING,然后协议栈在没有任务处理的时候都会进入休眠,您说的休眠通过定时来唤醒,是通过自己设置寄存器来实现吗?协议栈程序看着有点懵啊,请教应该如何修改协议栈的代码
1、我认为广播的端点自己不应该收到,其它设备都能收到(网络好的情况下)2、具体我不记得了,不能随便说,建议百度一下。可以自己定时唤醒,比如定时采集传感器数据并上报。好像有个地方配置,你再搜搜看,我也是半瓶水,别误导你了
还是很感谢您的指点,我再查查