我正在使用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
谢谢。
答案 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 []传递给第二个参数,将完整长度传递给第三个参数。