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

 

实现:父节点向休眠终端发送修改休眠时长的命令,终端每次休眠被唤醒之后,向父节点发送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,如此即达到了目标。

但是实际上我想做的是拿到第一个数据之后,预测第二个数据来确定发送完第一个数据之后应该休眠的时长,上述方法得到的结果却延时了一个数据,并没有达到预期。还得继续研究看看。。。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值