wincc语音播报可以读出来数字,读不了汉字,求解答

已锁定

AzaiBlind

  • 帖子

    7
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2020-10-17

普通 普通 如何晋级?

wincc语音播报可以读出来数字,读不了汉字,求解答

821

3

2021-03-08 23:01:15

实现思路:

实时捕捉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

完成组态过程


wincc语音播报可以读出来数字,读不了汉字,求解答 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32899条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。