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