作者共發了6篇帖子。 內容轉換:不轉換▼
 
點擊 回復
477 5
【程序】TinyOS中的printf语句的使用
一派護法 十九級
1樓 發表于:2016-8-4 16:17
【TestAppC.nc】
configuration TestAppC
{
}
implementation
{
    components TestC, MainC;
    components new TimerMilliC() as t0;
   
    TestC.Boot -> MainC.Boot;
    TestC.t0 -> t0;
}
【TestC.nc】
#include <printf.h>

module TestC
{
    uses interface Boot;
    uses interface Timer<TMilli> as t0;
}
implementation
{
    uint8_t a = 250;
    uint16_t b = 65530u; // 在数字后面加u表示unsigned, 可消除相关警告
    uint32_t c = 4294967290u;
   
    event void Boot.booted(void)
    {
        printf("Hello World!\n");
        printfflush(); // 必须执行这个函数, 否则由于缓存, 发送的内容可能不能及时显示到屏幕上
        call t0.startPeriodic(1000);
    }
   
    event void t0.fired(void)
    {
        printf("a=%u, b=%u, c=%lu\n", a, b, c);
        printfflush();
       
        a++;
        b++;
        c++;
    }
}
【Makefile】
COMPONENT = TestAppC
CFLAGS += -I$(TOSDIR)/lib/printf
include $(MAKERULES)
【run.sh】
java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb
一派護法 十九級
2樓 發表于:2016-8-4 16:19
【命令】
编译:make telosb
编译并烧写:make telosb install
查看串口输出信息:./run.sh
(按Ctrl+C退出)
一派護法 十九級
3樓 發表于:2016-8-4 16:20
【运行结果】
一派護法 十九級
4樓 發表于:2016-8-4 16:24
程序每隔1秒钟发送一次信息。
按下节点上的RESET按钮后,可能因数据包突然中断导致接收端输出bad packet的信息,属正常情况。
从运行结果可以看出,uint8_t的最大值为255,uint16_t的最大值为65535,uint32_t的最大值为4294967295。
如果编译程序时出现unsigned的警告,在数字后面加上字母u可消除警告。
一派護法 十九級
5樓 發表于:2016-8-4 17:29

将串口从虚拟机中拔出,然后在Windows环境下打开串口,可以发现每次接收到的数据很复杂,每次都接收到41字节内容,并且字符串的开头"a="从第10个字节处开始。
一派護法 十九級
6樓 發表于:2016-8-4 17:44

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:477 回複數:5
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-8-4 17:44
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。