錯誤檢測(1)可靠的數據傳輸
本節將演示由於發送方和接收方不能同步時鐘所引起的問題:
Parity 奇偶校驗位
Checksum 校驗和
CRC error detection 循環冗余校驗(Cyclic Redundancy Check)
發送數據的穩定性是依靠error detect 和 error correct 來保證的
Non-return-tozero 不歸零編碼:
low就發0 high就發1
transmiter
receiver
Arduino
5v 電壓 led接入d3
&和 | 既是邏輯運算符也是位運算符,而&&和||只是邏輯運算符。
>> 右移運算符
接上示波器
再重新傳送數據:
看一下1s內發的數據:
100 1000 (大寫字母H的ASCII編碼
可以看出這裏少了一個bit 這裏只有七位
所以再相左一點點就可以找到這個字節
這個字節是 0100 1000
下一個字節是0110 0101 是e(我們要發hello world。。。
下一個字節是 0110 1100
接了一個LCD面板: (d4 d5 d6 d7 just four of the data pins
然後騷操作 安了一個液晶的庫
然後開始編碼(define the pins we using
這個操作
就是輸出完之後就輸出空白
Now we build sth with NRZ encoding
Receiver也做好了
開始編碼:
(pin3 設置為input)
繼續
。。。
接上:
看一下結果:
(開始還行 但是傳著傳著就出現亂碼了
檢查一下,transmitter 和 receiver的都是200ms讀/寫一次
我們把這個delay改小一點,改成198吧
(結果又亂碼了
Receiver換成196
(基本都沒事了,但是最後一個字符還是掛掉了)
結論: these delay things is really a bad way to try to synchronize these things .(because you know we really don’t know how much time this processing is going to take
通過手動同時按開關的話基本不能可靠的維持同步
這就是一個不reliable的communication 因為這些東西最終一開始還是同步的 但是最終會不同步
so delay isn’t the right way to ensure…
錯誤檢測(1)可靠的數據傳輸