在使用串口發送數據時可以選擇字符串發送或者十六進制發送,通常情況下我們習慣選用字符串發送數據。關于兩者的區別,需要從計算機存儲數據的格式說起。
在計算機中,數據是以二進制的形式存儲的,例如十進制 1(10)在計算機中用 00000001(2)來表示。我們在用串口發送數據的時候首先將待數據轉換為對應的ASCII碼,然后再將這些ASCII碼按照二進制的方式一位一位的發送出去。
例如我們要發送一串數據“A852010100000000A91A”,以字符串和十六進制兩種方式發送:
(1)字符串發送
串口以字符串發送數據,首先將字符串轉化為二進制,格式如下:
(A的ASCII碼是65,十六進制是0x41,二進制內存為01000001)
01000001 ……
A
然后按照8位(串口設置數據位為8位)形式將數據發送出去。
串口接收的數據格式如下:
編號 | 數據內容 | 編號 | 數據內容 |
0 | A | 8 | 0 |
1 | 8 | 9 | 0 |
2 | 5 | 10 | 0 |
3 | 2 | 11 | 0 |
4 | 0 | 12 | A |
5 | 1 | 13 | 9 |
6 | 0 | 14 | 1 |
7 | 1 | 15 | A |
(2)十六進制發送數據
串口以十六進制發送數據,首先將數據轉化為:
10101000 01100010 00000001 00000001 00000000 00000000 10101001 0001 1010
0XA8 0X52 0X01 0X01 0X00 0X00 0XA9 0X1A
然后按照8位(串口設置數據位為8位)形式將數據發送出去。
串口接收的數據格式如下:
編號 | 數據內容 | 編號 | 數據內容 |
0 | A8 | 4 | 00 |
1 | 52 | 5 | 00 |
2 | 01 | 6 | A9 |
3 | 01 | 7 | 1A |
仔細對照接收結果就很容易明白字符串發送和十六進制發送的區別了。
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |