2014-02-20 28 views
1

我需要串口(UART)讀取功能的一些幫助。我需要讀入並顯示十六進制值,但目前我正在讀取ASCII值。如何在UART上使用讀功能讀取十六進制值

發送Hex在UART的我用

char data [] = {0xFF}; 
write(fd, data, sizeof(data)); 

該做的工作很好。但是我的閱讀有問題。我希望能夠讀取十六進制值並在以後使用讀取值。

目前我使用此功能

read(fd, buffer, sizeof(buffer)); 

讀書,但結果它顯示我的ASCII值,我知道我需要做出某種轉換,但我已經搜查,是不成功的發現怎麼做。

在此先感謝。

+0

像 「十六進制」 或 「ASCII」 只是不同的方式來談論二進制數據。字節。他們根本無法知道你在說什麼或者問題是什麼。 –

回答

0

代碼很可能讀取的數據正常,但需要使用"%X"進行後續顯示。
對於每個字節:

如果最近的編譯器,

printf("%02hhX", buffer[i]); 

否則

printf("%02X", (unsigned char) buffer[i]); 
0

由於您的問題缺乏正確回答您所需要的信息,這些都是我assumtions:

  1. 您知道您發送過線單字節(可表示爲0xFF的十六進制和255(十進制)和11111111(二進制))
  2. 你知道沒有區別,一切都只是數字。
  3. 您要將此單個數字表示爲字符串給用戶,該字符串以十六進制表示法描述數字。 (「%X」,buffer);

    printf(「%X」,buffer);