Lesson11---TOSSIM示意仿真[实用].ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1件事是:导入 TOSSIM 并创建一个TOSSIM 对象。 运行TOSSIM仿真的方法是用runNextEevent 函数。例如: from TOSSIM import * t = Tossim([]) t.runNextEvent() 0 当告诉TOSSIM 运行 下一个 事件event,它返回 0 。这意味着:接下去没有事件可以运行。 在这里,没有下一个事件是因为我们还没有让节点启动起来。 * 精品ppt·实用可编辑 这段代码将会告诉节点32 在45654时间标记点启动(仿真时间标记 simulation tick) ,然后运行它的第1个事(booting)。 为了不使用原始的仿真时间标记为单位,可以调用 ticksPerSecond() 。 m = t.getNode(32); m.bootAtTime(45654); t.runNextEvent() 1 m = t.getNode(32); m.bootAtTime(4 * t.ticksPerSecond() + 242119); t.runNextEvent() 1 现在,runNextEvent 返回了 1 ,因为有一个事件要运行。但程序员没有办法知道这个节点到底有没有启动。 接下来介绍两种办法来确认节点是否启动。 * 精品ppt·实用可编辑 第1种方法:直接用相关函数查询 m.isOn() 1 m.turnOff() m.isOn() 0 * 精品ppt·实用可编辑 一个TOSSIM 对象有几个有用的函数。 可以用dir 函数查看。如下图: 前后有两个下划线 “__”的通常是不能手动使用的内部函数。例如,__init__ 在创建对象时在内部被自动调用的。 * 精品ppt·实用可编辑 ⑴ currentNode():返回当前节点的ID。 ⑵ getNode(id):返回一个节点对象。 ⑶ runNextEvent():运行一个仿真事件。 ⑷ time():返回当前时间,用仿真时间标记表示,是一个大型整数。 ⑸ timeStr():返回当前时间的字符串。 ⑹ init():初始化TOSSIM。 ⑺ mac():返回介质访问层的对象。 ⑻ radio():返回无线电模型的对象。 ⑼ addChannel(ch, output):增加output作为到ch通道的输出。 ⑽ removeChannel(ch, output):移除output作为到ch通道的输出。 ⑾ ticksPerSecond():返回1s仿真时间对应的仿真时间标记数。 Tossim 对象的几个常见的工具函数 * 精品ppt·实用可编辑 四、调试语句 得知节点是否打开的第2种方法是让它在启动后打印出信息告诉程序员。 TOSSIM 有一个调试输出系统,称为 dbg 。有4个 dbg 命令: dbg:打印调试语句,以节点ID 开头。 dbg_clear:打印调试语句,不以节点ID 开头。 dbgerror: 打印错误信息,以节点ID 开头。 dbgerror_clear:打印错误信息,不以节点ID 开头。 * 精品ppt·实用可编辑 四、调试语句 修改 RadioCountToLedsC 里的boot.booted事件,打印出当它启动时的调试信息。例如: event void Boot.booted() { call Leds.led0On(); dbg(Boot, Application booted.\n); call AMControl.start(); } dbg() 语句带有两个或更多的参数。 第1个参数(上述例子中的”Boot” )定义了输出通道。一个输出通道是一个string 字符串。 紧接的参数是输出的消息内容和变量格式。 * 精品ppt·实用可编辑 event message_t* Receive.receive(message_t* bufPtr, void* payload, uint8_t len) { dbg(RadioCountToLedsC, Received packet of length?%hhu.\n, len); ... } 打印出了收到数据包的长度,是一个8位的无符号值(%hhu)。 dbg(RadioCountToLedsC, Time:?%s\n, sim_time_string()); 打印出此处仿真的时间。 一旦在事件event 里增加这样的调试语句,需要重新编译make micaz sim 。 dbg语句 * 精品ppt·实用可编辑 TOSSIM 的调试输出可以对每个输出通道进行配置。所以,可以把 “Boot”通道发送到文件和标准输出,而“RadioCountToLedsC” 发

文档评论(0)

飞翔的燕子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档