Contiki时间戳值为int

时间:2017-08-16 13:04:50

标签: c timer sensor iot contiki

我想将模拟的时间戳值作为int发送。更清楚的是,如果mote输出是:

00:39.841   ID:6    unicast message ready to be sent

我希望能够以毫秒为单位输入值00:39.841。我该怎么办?

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您使用函数strtok()查找所需的字符串,例如0039

strtol()从字符串转换为长整数。无论如何,请从atoi() 远离

Why shouldn't one use atoi()

这是一个例子,从分钟/秒到毫秒的转换取决于你。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char input[] = "00:39.841   ID:6    unicast message ready to be sent";
    char * ptr;


    long minutes  = 0,
         seconds  = 0,
         milisecs = 0;

    ptr     = strtok(input, ":");
    if (ptr == NULL) { fprintf(stderr, "Wrong input minutes."); return 1; }
    minutes = strtol(ptr, (char **)NULL, 10);

    ptr     = strtok(&input[3], ".");
    if (ptr == NULL) { fprintf(stderr, "Wrong input seconds."); return 1; }
    seconds = strtol(ptr, (char **)NULL, 10);

    ptr     = strtok(&input[6], " ");
    if (ptr == NULL) { fprintf(stderr, "Wrong input milisecs."); return 1; }
    milisecs = strtol(ptr, (char **)NULL, 10);

    printf("%ld - %ld - %ld\n", minutes, seconds, milisecs);

    return 0;
}