電磁流量計在自動抄表的應(yīng)用與探討 五十
初始化時設(shè)計UARTO和UARIT 都是數(shù)據(jù)接收中斷,當有數(shù)據(jù)到來時,把數(shù)據(jù)和預(yù)先放在一段數(shù)據(jù)區(qū)里的通信協(xié)議頭進行比較,如果協(xié)議頭比較出錯則設(shè)定要重新比較協(xié)議頭,如果正確就接著接收后面的有效數(shù)據(jù),并一直等待有效數(shù)據(jù)接收結(jié)束的一個標志數(shù)據(jù)OXOD,當然可能出錯接收不到結(jié)束數(shù)據(jù),這會造成程序的異常發(fā)生,所以要用個計數(shù)變量來設(shè)定最大的有效數(shù)據(jù)的個數(shù),如果在這個個數(shù)之內(nèi)沒有接收到結(jié)束數(shù)據(jù),那肯定是通信數(shù)據(jù)出錯了,發(fā)送命令出錯的返回碼給上位機并設(shè)定重新接收協(xié)議頭。
在命令接收正確的情況下,對數(shù)據(jù)進行比較分析,調(diào)用數(shù)據(jù)處理的子程序,并把要發(fā)送回去的數(shù)據(jù)放到一個預(yù)先分配的一段內(nèi)存里,根據(jù)要發(fā)送的字節(jié)個數(shù),把這段數(shù)據(jù)從對應(yīng)的串口發(fā)送出去即可。
電磁流量計