TinyOs无线消息收发问题
2012-03-05 23:17
253 查看
最近两天在写nesc程序的时候,遇到了一个让我困扰了很长时间的问题,问题及解决方法如下。
问题:TinyOs 里提供了无线消息收发的组件,最常用的是GennericComm组件,该组件集成了
Send和Receive函数,其中Receive是个事件,当有无线数据报到达时,会触发Receive事件。
假设目前有3个节点,0,1,2 ,2 号节点要向0号节点发送数据包,中间经过1号节点。那么一号
节点的工作就是Receive到2号节点的数据包,然后再Send给0号。
1.一开始2号节点一直发送数据直到一批(10个报文)发送完,但这个时候0号节点没有任何反
应。经过检查以后发现1号节点的确接收到10个报文,但是却没有将这些报文全部转发出去。
然后我降低了2号节点的发送速率,发现1号节点既可以收到10个报文,同时也能将这十个报文
转发出去。
2.但这个时候问题又来了,虽然1号节点能正确运行,但是0号节点却收不到1号节点的任何数据
包。同样,2号节点也收不到1号节点的转发数据包。一开始还是以为是速率的问题,然后我就
试着降低转发速率,但发现毫无作用。有一点需要说明的是:一开始我的send函数是嵌套在
Receive事件里的。即,1号节点一旦收到数据包,将会直接在Receive事件里调用转发函数。
后来为了更方便的实现速率控制,我把send函数放在了定时器里,发现0号节点可以收到1号
节点的数据包。随后我又将速率调到很高,发现0号节点仍然能收到,这就很奇怪,说明了一
个问题:这根本不是速率的问题!
随后 ,我把send函数放在了一个task里,然后每次receive到数
据包的时候,post一个task。实验发现,不管转发有多快,10个
数据包可以全部被0号接收。通过这个实验,总结出一个很细小
的nesc无线收发的注意问题:Receive事件中一定不可以直接调用
send函数!!!这应该是无线收发组件GennericComm调度策略所
造成的!
问题:TinyOs 里提供了无线消息收发的组件,最常用的是GennericComm组件,该组件集成了
Send和Receive函数,其中Receive是个事件,当有无线数据报到达时,会触发Receive事件。
假设目前有3个节点,0,1,2 ,2 号节点要向0号节点发送数据包,中间经过1号节点。那么一号
节点的工作就是Receive到2号节点的数据包,然后再Send给0号。
1.一开始2号节点一直发送数据直到一批(10个报文)发送完,但这个时候0号节点没有任何反
应。经过检查以后发现1号节点的确接收到10个报文,但是却没有将这些报文全部转发出去。
然后我降低了2号节点的发送速率,发现1号节点既可以收到10个报文,同时也能将这十个报文
转发出去。
2.但这个时候问题又来了,虽然1号节点能正确运行,但是0号节点却收不到1号节点的任何数据
包。同样,2号节点也收不到1号节点的转发数据包。一开始还是以为是速率的问题,然后我就
试着降低转发速率,但发现毫无作用。有一点需要说明的是:一开始我的send函数是嵌套在
Receive事件里的。即,1号节点一旦收到数据包,将会直接在Receive事件里调用转发函数。
后来为了更方便的实现速率控制,我把send函数放在了定时器里,发现0号节点可以收到1号
节点的数据包。随后我又将速率调到很高,发现0号节点仍然能收到,这就很奇怪,说明了一
个问题:这根本不是速率的问题!
随后 ,我把send函数放在了一个task里,然后每次receive到数
据包的时候,post一个task。实验发现,不管转发有多快,10个
数据包可以全部被0号接收。通过这个实验,总结出一个很细小
的nesc无线收发的注意问题:Receive事件中一定不可以直接调用
send函数!!!这应该是无线收发组件GennericComm调度策略所
造成的!
相关文章推荐
- 用java收发二进制消息的问题已经解决
- IM收发消息问题
- Java NIO框架Netty教程(五) 消息收发次数不匹配的问题
- 安卓手机锁屏收发消息问题
- WebKit之Chrominu的IPC消息收发/分发的讲述
- 微软消息队列路径的使用问题
- 解决笔记本电脑使用网线正常,使用无线网络速度慢的问题
- win8.1 Microsoft Hyper-V Network Switch Default Miniport 上有黄色感叹号而导致某些无线网络无法连接的问题
- 使用myEclipse遇到的问题:控制台(console)一有消息就弹出来
- scoket网络通信收发消息
- 困扰无线水气表抄表的功耗问题浅谈
- MFC 线程消息传递问题二---两个线程之间进行消息的传递
- Ubuntu 12.04 无线网卡驱动问题 bcm43xx
- Win7出现无法启动无线服务,出现无线网络未连接问题的解决方案
- centOS7无线上网问题
- zigbee协议栈应用(三)无线收发控制LED与串口使用
- 消息系统NATS常见的几个问题
- 网线连接并PPPOE拨号后无法扫描无线网络问题的解决办法
- 消息队列的一些奇葩问题
- umeng消息推送 MIUI8闪退的问题