您的位置:首页 > 其它

父节点向休眠终端发送修改休眠时长的命令

2018-04-11 11:33 253 查看
 
实现:父节点向休眠终端发送修改休眠时长的命令,终端每次休眠被唤醒之后,向父节点发送Data Request请求数据,父节点将保存的命令发送给终端,终端接收到之后改变时长。
 
 
1、在f8wconfig.cfg中设置如下:

1.DNWK_INDIRECT_MSG_TIMEOUT=30  (使得父节点保存数据的时长加长,这个时长不能少于终端休眠的时长,否则可能父节点在终端醒来之前就已经丢弃了,那终端就不能再接收到数据了)
2.
-DRFD_RCVC_ALWAYS_ON=FALSE
 
/* The number of milliseconds to wait between data request pollsto the coordinator. */
-DPOLL_RATE=0  
(关闭终端定时向父节点请求数据的时长)

 
/* This is used after receiving a data indication to pollimmediately
 * for queued messages...inmilliseconds.
 */
-DQUEUED_POLL_RATE=100
 
/* This is used after receiving a data confirmation to pollimmediately
 * for responsemessages...in milliseconds
 */
-DRESPONSE_POLL_RATE=100  
(设置终端在每次醒来执行完用户任务之后,即向父节点发送Data Request数据请求)

2、在终端的数据接收函数中,覆盖之前的任务。如下图
 


终端在接收到之后,可直接设置osal_start_timerEx( GenericApp_TaskID,SEND_DATA_EVENT, Sleep_Time );此时任务会覆盖掉之前的任务,重新开始计时,此时的休眠时长就是所指定的时长。

当然,图中的时长只是为了方便设置的固定值,也可以将时长放在发送的命令中。

 

3、实验之后通过串口得到数据:



在第一个数据收到之后,发送“11”命令给协调器,协调器接收到“11”之后,向终端发送修改睡眠时长的命令。初始化的睡眠时长是20S,命令其修改为10S可以看到,第一个数据与第二个数据之间是20S,

而第二个数据与第三个数据之间就变成了10S,如此即达到了目标。

但是实际上我想做的是拿到第一个数据之后,预测第二个数据来确定发送完第一个数据之后应该休眠的时长,上述方法得到的结果却延时了一个数据,并没有达到预期。还得继续研究看看。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: