|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
[求助]設(shè)計程序求助,高手請進 |
| 作者:lsvrky 欄目:ARM技術(shù) |
[求助]設(shè)計程序求助,高手請進 現(xiàn)在準備完成一項數(shù)據(jù)通信試驗。 我自己做的板子上(s256)發(fā)送在一定時間內(nèi)(幾十毫秒)發(fā)送 8個字節(jié)的數(shù)據(jù)。用485通信,每發(fā)送一個字節(jié)的數(shù)據(jù),然后等待另外 相連的設(shè)備收到后給我送回該字節(jié),如果收到數(shù)據(jù)正確,就繼續(xù)發(fā)送下 一個字節(jié),一直到8個自己發(fā)送完。如其中不能出現(xiàn)超時等錯誤,則 發(fā)送失敗。且如果發(fā)送的完這8個數(shù)據(jù)的時間如果超過一定時間(幾十毫秒) 。則發(fā)送失敗 我想來想去,覺得這程序不太好寫,哪個大俠能給我指點一下 |
| 2樓: | >>參與討論 |
| 作者: densy 于 2006/11/28 22:58:00 發(fā)布:
主要是等待超時 如:while((u0lsr&0x01)!=1)//接收寄存器空 { i++;if(i>????){i=0;return fault;}//計時;返回或跳到重發(fā)。 } if(u0rbr!=ack)return fault;// 大概這樣吧。 |
|
| 3樓: | >>參與討論 |
| 作者: 龍一 于 2006/11/29 19:13:00 發(fā)布:
實際上很容易,主要看你如何分離各個子模塊 比如,你先設(shè)計一個函數(shù)完成一個字節(jié)的發(fā)送與等待,這個函數(shù)返回兩個值,如果在指定時間內(nèi)等到數(shù)據(jù)正確回送則返回真值,否則返回假值。然后再設(shè)計一個函數(shù)來循環(huán)調(diào)用前一個函數(shù)來完成所有八個字節(jié)的發(fā)送,每發(fā)送一個字節(jié)數(shù)據(jù)判斷一次前一個函數(shù)的返回值,成功則繼續(xù)發(fā)送下一個,不成功則重復(fù)發(fā)送一定次數(shù),如果指定次數(shù)內(nèi)仍然不成功則放棄本次發(fā)送,這表明當前8個字節(jié)的數(shù)據(jù)發(fā)送失敗。一般條件下不會出現(xiàn)這種情況,8個字節(jié)的發(fā)送應(yīng)該比較順利,只是會偶爾重試一次。明白了么,大致過程就是這樣。 |
|
| 4樓: | >>參與討論 |
| 作者: lsvrky 于 2006/11/30 20:37:00 發(fā)布:
謝謝 謝謝兩位大俠的指點 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |