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