基于STC10F04EX的多串口數據收發(fā)系統
所建立的水質(zhì)監測系統中,“光譜儀”給出的數據量較大,因此“多串口收發(fā)控制系統”分時(shí)連接到“光譜儀”時(shí),采用命令應答方式控制光譜儀的數據發(fā)送,分批多次傳送。單片機將UART指向光譜儀,首先向光譜儀發(fā)送命令,指明數據來(lái)源和傳送的數據量(例如200個(gè)字節);其次等待光譜儀的響應并將傳來(lái)的200個(gè)字節的數據暫存在所開(kāi)辟的緩沖區中;然后再將UART切換至無(wú)線(xiàn)模塊通道,將單片機緩存中的數據寫(xiě)入無(wú)線(xiàn)模塊轉發(fā)出去;重復進(jìn)行上述步驟直至接收到光譜儀的全部數據。
水質(zhì)監測系統中的另外2種設備的數據量相對較小,可以一次性接收/轉發(fā)。
3.3 接收/轉發(fā)控制流程
根據設備的不同數據周期,以時(shí)間為線(xiàn)索,為相應的設備分配接收/發(fā)送時(shí)間(圖2),在所分配的時(shí)間里,單片機要進(jìn)行UART通道切換:指向串口設備接收或發(fā)送數據、指向無(wú)線(xiàn)設備發(fā)送數據。本文引用地址:http://dyxdggzs.com/article/172978.htm
程序采用中斷方式處理定時(shí)、串口的數據接收/發(fā)送、鍵盤(pán)輸入等過(guò)程。以中斷方式運行,提高了程序的執行效率。圖3為定時(shí)中斷服務(wù)程序流程圖。該水質(zhì)監測過(guò)程,就是循環(huán)掃描3個(gè)水監測設備,獲取數據并進(jìn)行無(wú)線(xiàn)轉發(fā)。
3.4 主要的程序功能模塊說(shuō)明
串口驅動(dòng)程序為分析判斷數據來(lái)源,并調用相應的函數,完成對不同串口設備的數據接收和發(fā)送。將接收到的數據暫時(shí)保存于緩存中;將緩存中的數據進(jìn)行轉發(fā);定時(shí)中斷程序為周期性地切換UART通道,分別連接到外部的3個(gè)串口設備上和無(wú)線(xiàn)發(fā)射模塊上。切換串口通道的同時(shí),調整串口通信參數,以適應不同的串口設備。觸發(fā)串口發(fā)送過(guò)程,將緩存中的數據寫(xiě)入無(wú)線(xiàn)模塊轉發(fā);INT0中斷服務(wù)程序為及時(shí)響應鍵盤(pán)操作,然后調用相應的函數,完成參數設置等控制任務(wù);顯示程序為控制7279A.驅動(dòng)LED數碼管,顯示系統狀態(tài)等信息。
4 結語(yǔ)
多串口數據收發(fā)控制系統,已應用于水環(huán)境監測的數據轉發(fā),工作穩定,數據收發(fā)可靠。
本系統為采用一片單片機控制的單核心結構,與采用多核結構相比,盡管只能分時(shí)使用UART,但數據協(xié)調相對容易,并且在設計時(shí)已考慮了數據銜接問(wèn)題,不會(huì )導致數據丟失現象的發(fā)生;與采用多串口卡的方案相比,本系統可以脫離計算機獨立工作,因此現場(chǎng)不需要一臺計算機參與數據接收;無(wú)線(xiàn)方式數據傳送,傳送距離相對更遠;系統占用資源少,維護成本降低。
該系統還可應用于其他的多串口數據收發(fā)場(chǎng)合。經(jīng)過(guò)擴展,可連接的串口數目可以進(jìn)一步擴大。
評論