在实际工程中需要对开关量的变位进行报警,为了提醒值班人员除在画面上以颜,图标等提示外,一个非常好的报警方法是语音报警,将录制好的语音通过声卡播放出来。
一般而言语音报警的方式为通过调度来实现。在实际应用中,发现一个工作量减少的方法,采用Alarm Summary控件的NewAlarm方法报警。 第一节播放语音报警的函数
播放语音文件(.WA V)可以通过API函数来进行,不需要单独的编写。播放WA V文件的函数有两个,对应于同步和异步。所谓同步是指一次只能播放一个语音文件,不可以连续播放;而异步则可以同时打开多个语音文件,一个个连续的播放,在多个报警同时到来时非常有用。
同步函数为:mciSendString
使用时首先要声明:Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
用法:
Dim filename as String
Dim cmd As String
filename = "test.wav"
cmd = "open " & filename & " type WA VEAudio alias MyWav"
Call mciSendString(cmd, 0, 0, 0)
Call mciSendString("play MyWav", 0, 0, 0)
异步函数为:mciSendString
使用时首先要声明:Declare Function sndPlaySound Lib "winmm.dll"
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
用法:
Dim filename as String
filename = "test.wav"
Call sndPlaySound(filename, SND_SYNC)
可以连续调用sndPlaySound来进行连续多个语音文件的播放。
第二节用调度产生语音报警
采用调度产生语音报警的方法如下:
第一步确定需要产生语音的点,这里以IFIX1_H2O_CMP0902_AUTO (PCS CMP0902自动控制)为例。
第二步从工作台的菜单中选择新建Schedule。
第三步选择基于事件项。
双击名称弹出对话框如下:
名字和描述为默认,数据源选择如下:
Private Sub FixEvent1_OnTrue()
End Sub
添加一个模块。
在模块里添加对API函数的引用,这里以异步为例。
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
修改事件脚本如下:
Private Sub FixEvent1_OnTrue()
Dim filename as String
filename = " D:\Dynamics\SampleSystem\test.wav"
Call sndPlaySound(filename, SND_SYNC)
End Sub
完成一个信号点语音报警的配置。
注意的是,调度需要在工作台的用户首选项里的后台启动里把刚才生成的调度文件添加上。
然后,在系统配置的任务栏配置里,添加。
第三节用Alarm Summary控件产生语音报警