- 1、本文档共97页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
传感网原理与技术第六章--基于TinyOS的传感网应用开发.ppt
6.8.3 仿真脚本的编写 启动节点 t.getNode(1).bootAtTime(10000) t.getNode(2).bootAtTime(13000) … 驱动仿真 TOSSIM基于离散事件模型仿真 for i in range(0,10000): t.runNextEvent() 6.8.4 仿真例子 按照上一小节描述的过程,为SimpleCollection例程建立仿真脚本,具体代码见课本。运行效果如下图所示。 图6-22 SimpleCollection仿真开始 6.8.4 仿真例子 图6-22 SimpleCollection仿真结束 6.9 本章小结与进一步阅读的文献 进一步阅读的文献 TEP TinyOS Wiki /tinyos-wiki/index.php/Main_Page TinyOS官方网站 / 6.4.6 下载并安装AVR工具链 AVR工具链包含AVR单片机的编译器与烧写器等。 sudo apt-get install gcc-avr gdb-avr binutils-avr avr-libc avarice avrdude 名称 说明 gcc-avr AVR平台的交叉编译器 gdb-avr AVR平台的GDB调试器 binutils-avr AVR平台的二进制文件工具 avr-libc AVR平台的C标准库 avarice AVR的JTag在线调试工具 avrdude AVR的编程工具 表6-2 AVR工具链 6.5 简单无线传输 BlinkToRadio是TinyOS自带的一个例程,在Blink的基础上加入了网络通信。每个节点维护一个计数器,并在一个定时器的控制下递增。计数器每递增一次,就通过ActiveMessage将自身的ID号和计数值发送出去。每当节点接收到一个其他节点发来的数据包,就从其中把其他节点的计数值提取出来,并在LED上显示。所得到的运行效果就是节点A显示节点B的计数值,节点B显示节点A的计数值。 6.5.1 BlinkToRadio的模块 BlinkToRadio使用了以下模块: MainC:TinyOS启动过程,触发应用初始化。 LedC:提供板载LED的控制。 BlinkToRadioC: 包含BlinkToRadio的主逻辑。 TimerMilliC:微秒级定时器。 ActiveMessageC:平台级的ActiveMessage模块,管理网络传输。 AMSenderC和AMReceiverC:ActiveMessage的收发接口。 6.5.1 BlinkToRadio的模块 各模块间的连接在顶层配件BlinkToRadioAppC中。根据其中的连接信息,可得出模块关系图如下: BlinkToRadioC LedsC ActiveMessageC AMSenderC AMReceiverC TimerMilliC MainC 图6-20 BlinkToRadio模块关系图 6.5.2 BlinkToRadio的执行过程 TinyOS启动完成,触发Boot.booted()事件 调用BlinkToRadioC的Boot.booted()事件处理函数 调用AMControl.start()命令 AM启动完成,触发AMControl.startDone()事件 开启定时器,周期性触发 定时周期到,触发Timer.fired()事件 调用BlinkToRadioC的Timer.fired()事件处理函数 计数器+1 将当前计数器值和自身节点ID组包,通过AMSenderC的AMSend.send命令发送到广播地址 AM层发送完成,触发AMSenderC的AMSend.sendDone()事件 6.5.2 BlinkToRadio的执行过程 AM层从广播地址接收到指定类型的包,触发AMReceiverC的Receive.receive()事件 调用BlinkToRadioC的Receive.receive()事件处理函数 从接收到的数据包载荷中提取其他节点的计数值 将计数值使用LedC显示到板载LED上 6.6 简单数据分发 TinyOS自带了三种Trickle算法的实现,分别为Drip、DIP和DHV。它们的基本原理相同,但是实现上互有差异。在这一节中,我们将继续以Drip协议为例,学习数据分发的使用方法。 6.6.1 数据分发依赖的组件 DisseminationC 分发协议的最高层组件,实现分发协议。同时对应用提供一个StdControl接口,用以控制分发协议栈的工作。 DisseminatorC 通过key配对的一组实例共同代表一个在网络中需要同步的数据。应用通过操作它提供的DisseminationUpdate接口和D
文档评论(0)