基于GSM通信的SZF型波浪浮標接收系統
3 接收系統設計
SZF型波浪浮標通過(guò)發(fā)射模塊發(fā)送數據包,上位機通過(guò)接收模塊接收數據包,再通過(guò)串口連接到PC機上,在PC機上進(jìn)行數據的二次處理。上位機接收軟件使用可視化開(kāi)發(fā)環(huán)境VC++進(jìn)行開(kāi)發(fā)。數據處理流程如圖3所示。本文引用地址:http://dyxdggzs.com/article/153571.htm
3.1 數據接收
由于是通過(guò)串口與PC機進(jìn)行通信,所以在程序設計時(shí)選用了Windows下的MSComm控件來(lái)進(jìn)行串口數據接收處理。MSComm控件通過(guò)串口傳輸和接收數據,為應用程序提供串行通信功能,MSComm控件在串口編程時(shí)非常方便,本文使用其事件驅動(dòng)方法,接收串口數據。為事件添加驅動(dòng)函數程序如下:
ON_EVENT(CSZFRevSysDlg,IDC_MSCOMM1,1,CSZFRevSysDlg::OnCommMscomml,VTS_NONE)
對串口進(jìn)行初始化設置程序如下:
m_mscom.put_RThreshold(1);
m_mscom.put_InputMode(1);
其中特別注意的是:第一條設置表示串口接收到一個(gè)字符就觸發(fā)處理函數,第二條設置表示設置輸入方式為二進(jìn)制,這樣才能對COle Sa leArray變量進(jìn)行操作,否則COleSafeArray默認為test格式,不方便后面對數據進(jìn)行解析。
由于本系統Windows開(kāi)發(fā)環(huán)境為Vista,所以為了保證在其他Windows環(huán)境下也可以運行程序,需要為MSComm添加注冊,注冊過(guò)程如圖4所示。
3.2 實(shí)時(shí)顯示
系統根據浮標不同工作方式(定時(shí)測量方式,連續測量方式和檢測工作方式),以不同方式啟動(dòng)/關(guān)閉串口。
浮標一般工作在定時(shí)測量狀態(tài),串口是接收整點(diǎn)前6 min打開(kāi),準備接收數據,接收到數據包后,根據通信協(xié)議對數據包進(jìn)行解析,再分別顯示在界面相應位置,如圖5所示,可供監測人員實(shí)時(shí)的檢測數據。接收整點(diǎn)后10 min關(guān)閉串口,進(jìn)入休眠狀態(tài),如果關(guān)閉串口時(shí)有數據接收中,延時(shí)10 s再關(guān)閉串口。
評論