王淑
摘 要 通過開發(fā)一款軟件,實(shí)現(xiàn)地面自動氣象站網(wǎng)絡(luò)連接的實(shí)時監(jiān)控,一旦發(fā)生網(wǎng)絡(luò)連接中斷,軟件會自動報警,提醒值班人員,避免因網(wǎng)絡(luò)中斷無法及時上傳觀測數(shù)據(jù)。
關(guān)鍵詞 自動氣象站;網(wǎng)絡(luò)傳輸;中斷報警
中圖分類號:P415.12 文獻(xiàn)標(biāo)志碼:B 文章編號:1673-890X(2015)18--02
近年來,自動地面氣象觀測業(yè)務(wù)快速發(fā)展,氣象觀測數(shù)據(jù)通過專用光纖網(wǎng)絡(luò)(SDH)實(shí)時傳輸,傳輸速率高,極大地提高了數(shù)據(jù)上傳的時效性[1]。但是本站業(yè)務(wù)主機(jī)與省信息中心服務(wù)器網(wǎng)絡(luò)連接中斷或異常,未能及時發(fā)現(xiàn),會給值班人員帶來不必要的麻煩,輕則短時間數(shù)據(jù)無法及時上傳,造成上傳數(shù)據(jù)逾限,重則造成長時間的網(wǎng)絡(luò)中斷,導(dǎo)致定時數(shù)據(jù)缺報。目前,基層臺站還沒有配備能夠及時檢測到網(wǎng)絡(luò)故障的設(shè)備或是軟件。因此,開發(fā)一款網(wǎng)絡(luò)中斷報警軟件,對于提高地面數(shù)據(jù)上傳率,提高地面觀測綜合質(zhì)量意義重大[2]。
1 實(shí)現(xiàn)網(wǎng)絡(luò)中斷實(shí)時報警的原理
地面氣象觀測數(shù)據(jù)是通過業(yè)務(wù)主機(jī)的組網(wǎng)通訊軟件,與省氣象信息中心的FTP服務(wù)器連接,24 h實(shí)時上傳數(shù)據(jù)文件。因此利用Microsoft Visual Basic編寫一個程序,每隔5 min(可通過運(yùn)行界面更改間隔時間)監(jiān)控本機(jī)與FTP服務(wù)器的連接情況。一旦網(wǎng)絡(luò)異常,無法連接,程序會自動調(diào)用指定的音樂文件播放,實(shí)現(xiàn)網(wǎng)絡(luò)異常報警功能,及時提醒值班人員處理,縮短網(wǎng)絡(luò)中斷時間,使網(wǎng)絡(luò)故障的影響降至最低。
2 網(wǎng)絡(luò)中斷實(shí)時報警的代碼實(shí)現(xiàn)
利用API函數(shù)實(shí)現(xiàn)與FTP服務(wù)器的連接與對話,可以根據(jù)主機(jī)的地址、密碼和端口連接到任何一臺FTP服務(wù)器上。能夠成功連接FTP服務(wù)器,則能進(jìn)行文件上傳,說明網(wǎng)絡(luò)正常,反之則網(wǎng)絡(luò)發(fā)生故障。在本程序中,與FTP服務(wù)器的連接與對話是通過API函數(shù)來實(shí)現(xiàn)的,建立連接必須遵循一定的步驟和規(guī)則,才能正確地與FTP服務(wù)器取得連接和對話。對于實(shí)現(xiàn)連接與對話的每一個步驟,API函數(shù)至關(guān)重要,在整個交互對話過程中,只要熟悉了相應(yīng)的API函數(shù),就可以進(jìn)行FTP操作的用法。至于API函數(shù)怎么樣通過Internet與FTP進(jìn)行會話的底層細(xì)節(jié),可不必去考慮。
利用API函數(shù)實(shí)現(xiàn)與FTP服務(wù)器的連接與對話前,先在模塊中聲明該程序用到的API函數(shù)及其常量。
Public Declare Function InternetOpen Lib “wininet.dll” Alias “InternetOpenA” _
(ByValsAgent As String,ByVallAccessType As Long,ByValsProxyName As String, _
ByValsProxyBypass As String,ByVallFlags As Long) As Long
Public Declare Function InternetConnect Lib “wininet.dll” Alias “InternetConnectA” _
(ByValhInternetSession As Long,ByValsServerName As String,ByValnServerPort As Integer, _
ByValsUsername As String,ByValsPassword As String,ByVallService As Long, _
ByVallFlags As Long,ByVallContext As Long) As Long
Public Declare Function InternetCloseHandle Lib “wininet.dll” _
(ByValhInet As Long) As Integer
為了監(jiān)控不同的FTP服務(wù)器,在程序主窗體建立所需監(jiān)控的FTP服務(wù)器IP、用戶名和密碼輸入框(圖1)。通過internetopen()和internetconnect()函數(shù),連接FTP服務(wù)器,若成功則下個時間間隔再測試,不成功則通過sndPlaysound函數(shù),發(fā)出報警聲音。
圖1 輸入框
主要代碼編寫如下:
Private Sub Timer1_Timer()
a = a - 1
If a = 0 Then
bActiveSession = False
hOpen = 0
hConnection = 0
(下轉(zhuǎn)第頁)
(上接第頁)
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT,vbNullString,vbNullString, 0)
If Not bActiveSessionAndhOpen<> 0 Then
Dim nFlag As Long
nFlag = INTERNET_FLAG_PASSIVE
Dim txtServerIp As String
Dim strUser As String
Dim strPassword As String
txtServerIp = txtFTPserverIP.Text
strUser = txtUsename.Text
strPassword = txtPassword.Text
DimPortAs Integer
Port = txtPort.Text
hConnection = InternetConnect(hOpen,txtServerIp, Port, _
strUser,strPassword, INTERNET_SERVICE_FTP,nFlag, 0)
If hConnection = 0 Then
bActiveSession = False
sndPlaySoundApp.Path& “\1.wav”, SND_ASYNC
ElseIfhConnection<> 0 Then
InternetCloseHandlehConnection
hConnection = 0
End If
End If
a = h
End If
End Sub
報警音樂的設(shè)置:代碼默認(rèn)的報警音樂文件為程序路徑下的“1.wav”,可以根據(jù)自己的需要指定任意一個同名音樂,替換原來的音樂文件。
最后將該報警軟件設(shè)置成為開機(jī)自啟動,或者在每次開機(jī)之后手動打開,保持運(yùn)行狀態(tài),檢查主機(jī)是否連接音箱,并保持常開狀態(tài)。
3 結(jié)論
在業(yè)務(wù)機(jī)上運(yùn)行本程序,即能有效地監(jiān)控本機(jī)與上級信息中心服務(wù)的連接是否正常。不管何種原因無法連接,本軟件都能及時自動報警。比單純的通過PING命令來檢查網(wǎng)絡(luò)是否通斷更為可靠和有效。雖然軟件是通過直接連接FTP服務(wù)器的方法實(shí)現(xiàn)監(jiān)控,但是該方法是利用業(yè)務(wù)機(jī)運(yùn)行該軟件來實(shí)現(xiàn)的報警功能,所以一旦業(yè)務(wù)計算機(jī)故障或者停電關(guān)機(jī),報警功能就起不到作用,這是使用中必須注意的。
參考文獻(xiàn)
[1]李黃.自動氣象站實(shí)用手冊[M].北京:氣象出版社,2008.
[2]李江全,等.Visual Basic串口通信與測控應(yīng)用技術(shù)實(shí)戰(zhàn)詳解[M].北京:人民郵電出版,2007.
(責(zé)任編輯:趙中正)