王淑
摘 要 通过开发一款软件,实现地面自动气象站网络连接的实时监控,一旦发生网络连接中断,软件会自动报警,提醒值班人员,避免因网络中断无法及时上传观测数据。
关键词 自动气象站;网络传输;中断报警
中图分类号: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.
(责任编辑:赵中正)