設置 | 登錄 | 註冊

目前共有6篇帖子。

【程序】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

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。