0

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

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

osal_ConvertUTCTime(& timestampStruct, timestamp);

结构定义如下:

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

我的问题:

如何将 Struct 的内容以人类可读的格式写入 UART 端口?

例子:

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

谢谢你。

4

1 回答 1

0

我目前没有函数 HalUartWrite 的原型,但我用谷歌搜索了它,有人这样使用它:

HalUARTWrite(DEBUG_UART_PORT, "12345", 6);

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

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

于 2013-03-01T01:51:25.693 回答