在运行这个自带例子的时候,不知道大家是否遇到过没有打印结果没有的情况。
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
结果出现,结束