IAR-时间戳上的C编程转换为可读格式

时间:2013-01-02 18:24:37

标签: unix-timestamp

我正在使用Z-stack-CC2530-2.5开发基于Zigbee的应用程序。我遇到过时间映射转换问题。

我使用osal_ConvertUTCTime方法将uint32时间戳值转换为timestampStruct,如下所示:

osal_ConvertUTCTime(& timestampStruct, timestamp);

Struct的定义如下:

typedef struct{
uint8 seconds;
uint8 min;
uint8 hour;
uint8 day;
uint8 month;
uint16 year;
} UTCTimeStruct

我的问题:

如何以人类可读的格式转换要在UART端口上写入的Struct内容?

示例:

HalUARTWrite (Port0, timestampStruct, len)     // Output: 22/1/2013 12:05:45

谢谢。

1 个答案:

答案 0 :(得分:0)

我目前没有HalUartWrite函数的原型,但我用Google搜索了一下,有人用它作为:

HalUARTWrite(DEBUG_UART_PORT, "12345", 6);

所以我猜第二个参数必须是指向char的指针。您不能只将struct UTCTimeStruct变量传递给第二个参数。如果您只需要将原始数据输出到串行端口。您需要将结构转换为char *以使编译器满意。但一般来说,这是不好的做法。在您的情况下,这可能不是问题,因为您在8位处理器中工作,所有结构字段都是char或short。通常,如果将结构转换为char *并将其打印出来,由于结构填充,您的结构字段之间会出现很多无意义的字符。

行。有点偏离主题。回到你的问题,你需要自己将结构转换为友好的字符串。因为您知道输出字符串的格式为“22/1/2013 12:05:45”,其长度是固定的,所以您可以简单地声明该长度的char []。并通过位操作uint32时间戳值手动填写数字。之后,您可以将char []传递给第二个参数,将完整长度传递给第三个参数。

相关问题