2013-01-02 90 views
0

我正在使用Z-stack-CC2530-2.5開發基於Zigbee的應用程序。我遇到了一個timestmap轉換問題。C語言編程IAR-時間戳轉換爲可讀格式

我使用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 

謝謝。

回答

0

我沒有此刻的功能HalUartWrite的原型,但我GOOGLE了它,有人用它作爲這樣的:

HalUARTWrite(DEBUG_UART_PORT, "12345", 6); 

所以我想第二個參數必須爲char的指針。你不能只傳遞一個struct UTCTimeStruct變量到第二個參數中。如果您只需要將原始數據輸出到串行端口。您需要將結構轉換爲char *以使編譯器高興。但一般來說,這是不好的做法。在你的情況下,這可能不是問題,因爲你在8位處理器中工作,所有結構字段都是char或short。一般來說,如果你將一個結構體轉換成char *並將其打印出來,由於struct padding,你會在結構體字段之間產生大量無意義的字符。

好的。有點題目。回到你的問題,你需要自己將結構轉換成友好的字符串。因爲你知道你的輸出字符串是固定長度的格式「22/1/2013 12:05:45」,所以你可以簡單地聲明一個長度爲char []的字符串。並通過位操作uint32時間戳值手動填寫數字。之後,您可以將char []傳入第二個參數,並將確切長度傳遞給第三個參數。