Tossim仿真Blink 01

一、功能:如题,使用TinyOS自带的仿真器仿真Blink程序

二、Blink逻辑实现代码

  

#include "Timer.h"

module BlinkC @safe()
{
  uses interface Timer as Timer0;
  uses interface Timer as Timer1;
  uses interface Timer as Timer2;
  uses interface Leds;
  uses interface Boot;
}
implementation
{
  event void Boot.booted()
  {
    call Timer0.startPeriodic( 250 );
    call Timer1.startPeriodic( 500 );
    call Timer2.startPeriodic( 1000 );
    dbg("BlinkC","Application booted\r\n");
    //  dbg("BlinkC,BlinkC1","Application booted@ %s.\r\n",sim_time_string());
    // dbg("BlinkC1","booted Application @ %s.\r\n",sim_time_string());
  }

  event void Timer0.fired()
  {
    dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string());
    call Leds.led0Toggle();
  }
  
  event void Timer1.fired()
  {
    dbg("BlinkC", "Timer 1 fired @ %s \n", sim_time_string());
    call Leds.led1Toggle();
  }
  
  event void Timer2.fired()
  {
    dbg("BlinkC", "Timer 2 fired @ %s.\n", sim_time_string());
    call Leds.led2Toggle();
  }
}

 

三、步骤:

  1、进入Blink 所在目录  “cd xxx/Blink”

  2、生成仿真框架,为后续的仿真做准备,   就像生成一个界面,等着你输入(命令或脚本)来交互  "make micaz sim"  目前仿真只支持micaz平台, 后面的"sim"代表生成仿真框架

  3、编辑脚本文件simulation.py,代码如下:

    

#!/usr/bin/env python
#-*-coding:utf-8-*-            #解决编码问题
from TOSSIM import *            #导入TOSSIM仿真器
import sys

t=Tossim([])                #获得一个Tossim对象
m=t.getNode(35);            #创建一个ID为35的节点对象
m.bootAtTime(45654)            #在45654时间点(Simulation Tick)启动节点
f=open("log.txt",'w');
t.addChannel("BlinkC",sys.stdout)    #将Blink输出通道绑定到sys.stdout
t.addChannel("BlinkC",f)        #将Blink输出通道绑定到文件
        
for i in range (0,100):
 t.runNextEvent()            #运行下一个事件

  4、运行simulation.py,进行仿真

  Tossim仿真Blink 01_第1张图片

  你可以打开Blink/log.txt 文件,可以看到文件内容和上面图片内容相同

  5、小结:

      1)或许你会很奇怪,   

        
for i in range (0,100):
 t.runNextEvent()            #运行下一个事件

      明明我运行了100个事件,怎么Timer0没有触发100-1次呢?其实这里面还有很多其他事件执行了,只是我们没有dbg而已

      2)从上图可以看到Timer0每执行4次,Timer1执行2次,Timer2执行一次,这与我们的设计相同

转载于:https://www.cnblogs.com/LaowangNext/p/7764063.html

你可能感兴趣的:(Tossim仿真Blink 01)