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