在使用串口調試助手時發送和接收數據都是以字節 (Byte) 爲單位,並且可以選擇字符、十六進制、二進制三種收發格式 ,那麼這三種格式究竟怎樣區分呢?
首先我們來明確一個概念 :串口收發數據的單位 '' 字節 (Byte) '' , 1Byte = 8 bits , 串口收發數據格式一般爲 1bit起始位(一般爲0) + 8bits 數據位(一字節) +1bit校驗位(可有可無) +1bit結束位(一般爲1)
下面逐一區分三種收發格式:
(1) 十六進制: 由於1位十六進制數位寬爲 4bits ,那麼 2 位十六進制數佔有一個字節的位寬,所以當以16進制格式收發時,每個字節發送或者接收2位十六進制數, 舉個例子 ,當以16進制格式發送一組數據 '' 0F3C781A '' 時 , 每個字節對應的數據如下:
發送數據 | 0x0F | 0x3C | 0x78 | 0x1A |
---|---|---|---|---|
字節數 | 1 | 2 | 3 | 4 |
注意: 類似 ''0xFF'' 是表示兩位十六進制數的標準寫法,''0x'' 在實際應用串口調製助手中時直接省略。
(2) 二進制 : 參照十六進制收發格式的原理 ,每位二進制數位寬爲 1bit ,那麼串口每個字節可以傳輸 8 位二進制數,同樣,在傳輸數據 '' 0F3C781A '' 時 ,每個字節對應的數據即爲上表中十六進制數對應的二進制數。
發送數據 | 0000_1111 | 0011_1100 | 0111_1000 | 0001_1010 |
---|---|---|---|---|
字節數 | 1 | 2 | 3 | 4 |
同樣,以字符的格式發送數據 '' 0F3C781A '' 時 ,首先按照ASCII碼錶 (網址:http://www.asciima.com/) 找到每個字符對應的二進制和十六進制數如下表:
字符 | 0 | F | 3 | C | 7 | 8 | 1 | A |
---|---|---|---|---|---|---|---|---|
對應的16進制數 | 0x30 | 0x46 | 0x33 | 0x43 | 0x37 | 0x38 | 0x31 | 0x41 |
對應的2進制數 | 0011_0000 | 0100_0110 | 0011_0011 | 0100_0011 | 0011_0111 | 0011_1000 | 0011_0001 | 0100_0001 |
接收字節數 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
接收字符 | 0 | F | 3 | C | 7 | 8 | 1 | A |
接收16進制數 | 0x30 | 0x46 | 0x33 | 0x43 | 0x37 | 0x38 | 0x31 | 0x41 |
接收二進制數 | 0011_0000 | 0100_0110 | 0011_0011 | 0100_0011 | 0011_0111 | 0011_1000 | 0011_0001 | 0100_0001 |
講到這,想必讀者對於串口收發數據的三種格式的區別已經清晰明瞭了吧。