前言:
现时小伙伴们对“c语言报警声”大约比较着重,兄弟们都想要了解一些“c语言报警声”的相关知识。那么小编在网摘上汇集了一些对于“c语言报警声””的相关资讯,希望看官们能喜欢,我们快快来了解一下吧!作者:胡世川 - 西门子数字化工业集团自动化部
客户经常问到:出现严重故障时,能不能自动语音播报消息文本?因为做不到时时刻刻盯着监控画面。
So easy!
有视频有真相
,时长00:14
实验环境:
WinCC 7.5 SP2Windows10 及 Windows Server 2016/2019
实现思路:
实时捕捉WinCC的报警文本调用windows自带的SAPI语音技术接口,播报文本
开发步骤windows键+R,输入services.msc,打开windows服务界面
启动Windows的音频服务
在WinCC的“报警记录”中,对需要语音播报的消息变量,勾选“触发动作”,此报警消息触发后,会执行GMsgFunction函数。
在全局C脚本处的GMsgFunction函数里添加自定义的脚本(如下蓝颜色框),捕捉报警消息文本,传递给内部变量(如下红颜色框)。修改完后,此函数会自动从左侧目录树的“Alarm”进入“alarm”下:
.......
MSG_RTDATA_STRUCT mRT;
MSG_CSDATA_STRUCT sM; // holds alarm info
MSG_TEXT_STRUCT tMeld; // holds message text info
CMN_ERROR pError;
memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );
.......
if(mRT.dwMsgState == MSG_STATE_COME)
{
MSRTGetMsgCSData(mRT.dwMsgNr, &sM, &pError);
MSRTGetMsgText(0, sM.dwTextID[0], &tMeld, &pError);
SetTagBit("alarmComing",TRUE); //置位VBS脚本触发器
SetTagChar("alarmText",tMeld.szText); //报警消息文本
}
VBS全局脚本中调用SAPI接口播报消息文本,此脚本采用变量触发(内部变量alarmComing)。
Dim speaker, alarmText
Dim alarmComing
alarmComing=HMIRuntime.Tags("alarmComing").Read
alarmText=HMIRuntime.Tags("alarmText").Read
If alarmComing = 1 Then
Set speaker = CreateObject("SAPI.SpVoice")
speaker.rate = 0 '语速
speaker.volume = 100 ‘音量
speaker.Speak alarmText
HMIRuntime.Tags("alarmComing").write 0
End If
End Function
完成组态过程
若采用PC蜂鸣器提醒报警到来,可参考下面链接:
来源:人机常情 WinCC(微信公众号)
标签: #c语言报警声 #html调用vbs文件