在使用串口發(fā)送數(shù)據(jù)時可以選擇字符串發(fā)送或者十六進制發(fā)送,通常情況下我們習(xí)慣選用字符串發(fā)送數(shù)據(jù)。關(guān)于兩者的區(qū)別,需要從計算機存儲數(shù)據(jù)的格式說起。 在計算機中,數(shù)據(jù)是以二進制的形式存儲的,例如十進制 1(10)在計算機中用 00000001(2)來表示。我們在用串口發(fā)送數(shù)據(jù)的時候首先將待數(shù)據(jù)轉(zhuǎn)換為對應(yīng)的ASCII碼,然后再將這些ASCII碼按照二進制的方式一位一位的發(fā)送出去。 例如我們要發(fā)送一串?dāng)?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ū)別了。
|