在实际工程中需要对开关量的变位进行报警,为了提醒值班人员除在画面上以颜色,图标等提示外,一个非常好的报警方法是语音报警,将录制好的语音通过声卡播放出来。
播放语音文件(.WAV)可以通过API函数来进行,不需要单独的编写。播放WAV文件的函数有两个,对应于同步和异步。所谓同步是指一次只能播放一个语音文件,不可以连续播放;而异步则可以同时打开多个语音文件,一个个连续的播放,在多个报警同时到来时非常有用。
同步函数为:mciSendString
使用时首先要声明:
Declare Function mciSendString Lib “winmm.dll” Alias “mciSendStringA” (ByVal lpstrCommand As String, ByVallpstrReturnString As String, ByVal uReturnLength As Long, ByValhwndCallback As Long) As Long
用法:
Dim filename as String
Dim cmd As String filename = “test.wav”
cmd = “open " & filename & " type WAVEAudio 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
完成一个信号点语音报警的配置。
注意的是,调度需要在工作台的用户首选项里的后台启动里把刚才
生成的调度文件添加上。
然后,在系统配置的任务栏配置里,添加 FixBackgroundServer.exe。
来源:CSDN
作者:王明超-CUMT/DFMC
链接:https://blog.csdn.net/wangmingchao27/article/details/103920446