邢娜
摘要:該文介紹了VB開發(fā)“遙報儀數(shù)據(jù)記錄器v1”軟件編寫的原理,通過該軟件將潮位遙報儀的原始數(shù)據(jù)及接收數(shù)據(jù)的時間及潮位信息一同顯示,并可以保存數(shù)據(jù)中的接受時間,潮位和站臺信息,從而減少了使用潮位遙報儀時的工作量。
關(guān)鍵詞:VB;潮位遙報儀;功能原理
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)01-0110-02
1 概述
局技術(shù)中心開發(fā)的潮位遙側(cè)系統(tǒng)(岸臺)通過水位傳感器(超聲波或壓力式)能自動測量潮位變化,同時經(jīng)由數(shù)傳電臺構(gòu)成的無線通訊網(wǎng)絡(luò),向各接收機(船臺)發(fā)送潮位信息。船臺只要連接好設(shè)備,打開電源就可以直接使用,比人工驗潮簡單方便。
但是潮位遙報儀船臺使用時必須要手工記錄潮位,加大了外業(yè)測量的工作量。潮位遙報儀自帶有數(shù)據(jù)輸出接口,通過編寫應(yīng)用程序來接受并記錄潮位遙報儀的數(shù)據(jù),以減少外業(yè)記錄的工作量。
本程序開發(fā)采用由微軟公司開發(fā)的時間驅(qū)動的變成語言VB,它擁有方便的圖形用戶界面開發(fā)工具和控件,程序員可以輕松的使用VB提供的組件創(chuàng)建自己的應(yīng)用程序,本文介紹的便是Vb編寫的“遙報儀數(shù)據(jù)記錄器v1”這個自己編寫的小程序用來自動記錄潮位。
2 潮位遙報儀數(shù)據(jù)傳輸方式和數(shù)據(jù)格式
潮位遙報儀采用RS-232串口數(shù)據(jù)輸出。計算機進行串口通信時,必須打開串口并進行初始化后才能開始數(shù)據(jù)的發(fā)送和接收,通信完成后才能開始數(shù)據(jù)的發(fā)送和接受處理,通信完成后應(yīng)及時關(guān)閉串口。
VB讀取串口數(shù)據(jù)使用自帶的MSCOMM控件。簡單設(shè)置通訊串口號,通訊參數(shù),通訊狀態(tài),就可以直接讀取串口數(shù)據(jù),使用十分方便。潮位遙報儀的數(shù)據(jù)通訊參數(shù)為:波特率4800bit/s,數(shù)據(jù)位8bit/s,停止位1bit,檢驗位,無。
潮位遙報儀的數(shù)據(jù)輸出格式如下:
“蝌 WHHH0612181710#05+00.79M”
以上的數(shù)據(jù)為例,以“HHH”作為數(shù)據(jù)判斷的符號,后面的06年12月18日17時05分,站臺號:05號,潮位0.79M。
3 軟件系統(tǒng)設(shè)計與主要功能
本軟件是單一功能的應(yīng)用軟件,只能設(shè)計一個窗口,如圖1。
窗口的功能分區(qū)為:串口通訊設(shè)計(左)功能操作按鈕(中),數(shù)據(jù)顯示窗口(右和右下)三大部分。
串口通訊設(shè)置部分,由于潮位遙報儀的通訊參數(shù)已知,所以主要的操作是更改連接設(shè)備所用的串口號就可以正常使用了。
功能操作區(qū),主要有打開,關(guān)閉串口,保存潮位信息等。當(dāng)軟件用來連續(xù)工作時,且數(shù)據(jù)較多時,可以在此處設(shè)置只顯示部分數(shù)據(jù)。
數(shù)據(jù)顯示窗口,分為上下兩個窗口,上面的窗口主要用來顯示串口接收到的所有信息,下面的窗口顯示經(jīng)過去除亂碼后提取出的有用的潮位信息和相應(yīng)的接收到信息的時間,輸出的數(shù)據(jù)便是潮位數(shù)據(jù)顯示窗口所顯示的信息數(shù)據(jù)。
4 關(guān)鍵技術(shù)與算法實現(xiàn)
4.1 串口通訊設(shè)置中的串口號的確定
本軟件中參考部分電腦串口相關(guān)資料,使用一定的算法將使用的串口編號通過一個combobox的下拉列表顯示出來,此部分的程序代碼如下[2];
For I= 1 To 100 列出所有可以使用的串口號
On Error Resume Next 當(dāng)運行發(fā)生錯誤時,控件轉(zhuǎn)到下一個循環(huán)
MSComm1.comm Port=I
MSComm1.PortOpen=True
Select Case Err.Number
Case0
Commbo5.AddItem“COM”&Trim(I)
MSComm1 Port Open=False
Case 8005
MSComm1 Port Open=False
End Select
Err=0
Next
4.2 串口數(shù)據(jù)信息的識別
串口數(shù)據(jù)中有部分有部分亂碼數(shù)據(jù),所以需要識別出可用的信息:如站臺號和潮位值。
本軟件使用的是查找數(shù)據(jù)位的標(biāo)志的方法來識別,如查找到數(shù)據(jù)中有數(shù)據(jù)頭“HHH”和數(shù)據(jù)尾“M”的標(biāo)志時,就截取出中間包括有站臺號和潮位的信息數(shù)據(jù)并顯示在數(shù)據(jù)顯示窗口中。
詳細的代碼如下:
If InStr(1,r_tide,“HHH”)Then ‘ 判斷并取出潮位數(shù)據(jù)
If InStr(1,r_tide,“M”)Then
r_data=Mid(r_tide,Instr(1,r_tide,“#”,vb_TextCompare),10)
If tide_old<>r_data Then 只顯示最新數(shù)據(jù)
Text2.Text=text2.Text+Format(Time,“hh:mm:ss”)+“,”+r_data+vbCrLF
tide_old=r_data
Data_n=data_n+1
End If
End If
End If
4.3 數(shù)據(jù)記錄
在程序窗口界面中有“保存”功能,可以直接保存數(shù)據(jù)顯示窗口2中的已經(jīng)識別出的數(shù)據(jù);
當(dāng)數(shù)據(jù)記錄超過3個時,每接受一個數(shù)據(jù)就自動將數(shù)據(jù)窗口1中的數(shù)據(jù)保存在程序目錄下的日期+tide_orig_data.txt文件中,這樣當(dāng)電腦發(fā)生異常啟動后能保證數(shù)據(jù)記錄器已經(jīng)記錄的完整數(shù)據(jù)。
串口原始讀取數(shù)據(jù)(右)
4.4 數(shù)據(jù)顯示
程序窗口的下半部分是數(shù)據(jù)顯示部分。如果潮位數(shù)據(jù)有較大的跳動就容易在圖表窗口發(fā)現(xiàn)數(shù)據(jù)的異常。是一個很使用的數(shù)據(jù)補充顯示功能。endprint
在應(yīng)用程序中經(jīng)常會使用圖表表現(xiàn)數(shù)據(jù),這個可視的方式可以更清晰地反映數(shù)據(jù)的變化趨勢和進行數(shù)據(jù)對比,是支持決策最為直觀的工具。在VB中可以使用MSCHART控件創(chuàng)建圖表,并可以方便,快捷地顯示各種類型的圖表[3]。本程序利用的是MSCHART控件對識別出的數(shù)據(jù)進行圖形顯示。并同時更新4個數(shù)組來實現(xiàn)時間坐標(biāo)軸的自動縮放功能。關(guān)鍵程序代碼如下:
‘將數(shù)據(jù)奉新到顯示數(shù)組中
If Option1.Value=True Then
MSChart1.Chart Data=tidedata12
Else If Option2.value=true Then
MSChart1.Chart Data=Tidedata 36
Else If Option3.value=True Then
MSChart1.Chart Data=tide data72
Else
MSChart1.Chart Data=tide data144
End If
5 軟件優(yōu)點
本軟件已經(jīng)成功應(yīng)用于多次實驗和世紀(jì)測量過程,其優(yōu)點如下:
1) 操作簡單
在外業(yè)測量時,只需使用數(shù)據(jù)線將電腦和潮位遙報儀連接好,再打開本程序,通過設(shè)置連接所用的串口就可以直接使用,操作方便。
2) 功能簡單實用
軟件打開后,只要串口有數(shù)據(jù)就可以顯示到數(shù)據(jù)接收窗口中,并且可以自動在識別的數(shù)據(jù)之前增加當(dāng)前系統(tǒng)時間,這樣可以防止潮位發(fā)射臺的時間不準(zhǔn)確對數(shù)據(jù)的影響。
可以自動保存已經(jīng)接收到的數(shù)據(jù)到程序目錄下的臨時文件中,可以有效減少機器故障對數(shù)據(jù)記錄的影響,功能實用。
6 結(jié)束語
本文介紹了一種使用自主實現(xiàn)潮位遙報儀數(shù)據(jù)接收與采集的自研軟件。“遙報儀數(shù)據(jù)記錄器V1”。通過介紹的軟件可以將潮位遙報儀的原始數(shù)據(jù)及接收數(shù)據(jù)的時間一同顯示。并可以保存數(shù)據(jù)中的接收時間,潮位和站臺信息,具有很好的實用價值。
本程序當(dāng)前只實現(xiàn)了簡單的數(shù)據(jù)記錄功能,潮位的圖形顯示,保存為其他數(shù)據(jù)格式等功能在后期的版本中會增加,完善程序功能。
參考文獻:
[1] 羅海英.基于vc++的GPS狀態(tài)監(jiān)控與數(shù)據(jù)采集軟件的設(shè)計與實現(xiàn)[J].測繪通報,2010(12):27-29.
[2] 孫秀梅.Visual Basic開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007:711-725,544.endprint