基于A(yíng)RM的遠程無(wú)線(xiàn)監控系統的設計與實(shí)現
圖5 采集的圖像
GPRS DTU通過(guò)全功能串口與ARM開(kāi)發(fā)板相連接,在arm-linux的指令調度下將ARM采集到的圖像通過(guò)串口通信傳輸到GPRS DTU。arm-linux是通過(guò)設備文件訪(fǎng)問(wèn)串口的,在訪(fǎng)問(wèn)具體的串行端口時(shí),只需打開(kāi)相應的設備文件即可。串行端口Port1和Port2對應的設備文件分別為/dev/ttyS0和/dev/ttyS1。若要使用串口進(jìn)行通信必須在通信兩端設置好串口的屬性,包括數據傳輸的波特率、傳輸的數據格式、是否有奇偶校驗位、流控方式等。在Linux下進(jìn)行串口設置,涉及一個(gè)重要的數據結構struct termios,設置串口波特率struct termios Opt,設置串口數據位
串口使用open函數執行打開(kāi)操作,open( )函數帶有兩個(gè)參數,其中參數1為要打開(kāi)的設備文件名,參數2為打開(kāi)方式。它們的含義如下。
O_RDWR:既可讀也可寫(xiě)。
O_NOCTTY:告訴嵌入式Linux,該程序不想成為此端口的“控制終端”。如果應用程序不強調這一點(diǎn),那么任何輸入都會(huì )影響程序的執行。
O_NDELAY:表示該程序不關(guān)注DCD信號線(xiàn)所處的狀態(tài),即不管對端設備是在運行或是掛起。如果不設置該標志,則程序會(huì )被設置為睡眠狀態(tài),直到DCD信號為低為止。
使用close(fd)系統調用關(guān)閉串口。關(guān)閉一個(gè)串口通常會(huì )將DTR信號設置為低電平,如果外接GPRS DTU,就會(huì )將GPRS DTU掛起。使用write( )函數向串口寫(xiě)入數據,write調用若正確,返回發(fā)送的字節數,否則返回-1。從串口讀取數據如果在原始數據的模式下對端口進(jìn)行操作,read( )函數調用將返回串行口輸入緩沖區所有的數據。如果沒(méi)有數據,那么該進(jìn)程將被阻塞,處于等待狀態(tài),直到數據到來(lái),或者到了規定時(shí)間和出現錯誤為止。通過(guò)如下方法,能使read( )函數調用立即返回。
系統的實(shí)現
本系統監控中心服務(wù)器采用PC實(shí)現,使用Windows操作系統,使用VC++編寫(xiě)上位機程序,利用TCP/IP通信,輸入監控端的IP地址后,上位機可以與監控端通信,接收到傳輸過(guò)來(lái)的圖像,如圖6所示。該系統大概3~5秒傳輸一幅圖像。
圖6接收到的圖像
本監控系統支持短信和電話(huà)喚醒功能,也就是說(shuō)通過(guò)短信和電話(huà)撥號就可以對監控系統進(jìn)行遠程控制,使其進(jìn)入工作狀態(tài),進(jìn)行信息傳輸。具有連接時(shí)機可控功能,支持永遠在線(xiàn)、空閑下線(xiàn)和空閑掉電3種工作方式。在不進(jìn)行數據傳輸時(shí),監控系統可以進(jìn)入下線(xiàn)狀態(tài),大大節約了通信費用,而在需要重新開(kāi)始數據傳輸時(shí),可以用手機給監控系統發(fā)送短信或打電話(huà)將其喚醒,恢復與數據中心的連接,也可以隨時(shí)隨地發(fā)短信對監控系統進(jìn)行配置,方便管理。
評論