基于printf库的打印调试

来源:互联网 发布:战舰少女 知乎 编辑:程序博客网 时间:2024/05/16 15:41

在运行这个自带例子的时候,不知道大家是否遇到过没有打印结果没有的情况。

Thread[Thread-1,5,main]serial@/dev/ttyUSB0:115200: resynchronising
也就是上面这句话之后没有任何结果了。

#include "printf.h"
module TestPrintfC {
  uses {
    interface Boot;
  }
}
implementation {
    
  uint8_t dummyVar1 = 123;
  uint16_t dummyVar2 = 12345;
  uint32_t dummyVar3 = 1234567890;

  event void Boot.booted() {
      printf("Hi I am writing to you from my TinyOS application!!\n");
      printf("Here is a uint8: %u\n", dummyVar1);
      printf("Here is a uint16: %u\n", dummyVar2);
      printf("Here is a uint32: %ld\n", dummyVar3);
      printfflush();
  }

}

以上是源码中给的例子。

大家发现没有,所有打印的东西都是上电启动后打印一次就结束了。等你观察时候早就结束了,自然没有结果。

所以我改动了这个程序。

#include "printf.h"

configuration TestPrintfAppC{
}
implementation {
  components MainC, TestPrintfC, LedsC;
  components new TimerMilliC() as Timer0;

  TestPrintfC.Boot -> MainC;

  TestPrintfC.Timer0 -> Timer0;
  TestPrintfC.Leds ->LedsC;
}

以上是TestPrintfAppC的内容

#include "Timer.h" 
#include "printf.h"
module TestPrintfC {
  uses {
    interface Boot;
    interface Timer<TMilli> as Timer0;
    interface Leds;
  }
}
implementation {
    
  uint8_t dummyVar1 = 123;
  uint16_t dummyVar2 = 12345;
  uint32_t dummyVar3 = 1234567890;
    
void pprin(){
    printf("Hi I am writing to you from my TinyOS application!!\n");
      printf("Here is a uint8: %u\n", dummyVar1);
      printf("Here is a uint16: %u\n", dummyVar2);
      printf("Here is a uint32: %ld\n", dummyVar3);
      printfflush();
  }
  event void Boot.booted() {
    call Timer0.startPeriodic(1000);
      printf("Hi I am writing to you from my TinyOS application!!\n");
      printf("Here is a uint8: %u\n", dummyVar1);
      printf("Here is a uint16: %u\n", dummyVar2);
      printf("Here is a uint32: %ld\n", dummyVar3);
      printfflush();
  }
  event void Timer0.fired(){
       pprin();
       call Leds.led0Toggle();
  }
      
}

以上是TestPrintfC的内容。让第一个灯每隔1秒闪烁一次,并且打印一次内容。

然后输入

make telosb install  (注:笔者的是telosb节点)

然后输入

java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb

结果出现,结束

0 0