声音报警

做声音报警
 就是不能触发不知道错误在那
 请给各位指教
 谢谢
 Dim objWshShell
 Dim dizhi
 Dim chengxu
 Dim panduan
 Set panduan=HMIRuntime.Tags("bianliang")
 If panduan.value = 1 Then
 Set objWshShell = CreateObject("Wscript.Shell")
 dizhi = "C:\WINDOWS\Media\Windows XP 启动.wav"
 chengxu = "sndrec32 /play /close " & Chr(34) & dizhi & Chr(34)
 objWshShell.Run chengxu,0,True  
 End If
 

最佳答案

可以参考一下用得很多的C脚本实现方法:

 BOOL GMsgFunction( char* pszMsgData)
 {
 #pragma code("winmm.dll")
 BOOL PlaySound(LPCTSTR lpszSound,HMODULE hModule,DWORD dwSound);
 #define SND_FILENAME 0x00020000L
 #define SND_ASYNC 0x0001
 #pragma code()

 BOOL bRet=FALSE;
  MSG_RTDATA_STRUCT mRT;
   memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );

  
   if( pszMsgData != NULL )
   {
  sscanf( pszMsgData,  "%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d",
  &mRT.dwMsgNr,    // Meldungsnummer
  &mRT.dwMsgState,     // Status MSG_STATE_COME, .._GO, .._QUIT, .._QUIT_SYSTEM
  &mRT.stMsgTime.wYear,   // Tag
  &mRT.stMsgTime.wMonth,   // Monat
  &mRT.stMsgTime.wDay,  // Jahr
  &mRT.stMsgTime.wHour,   // Stunde
  &mRT.stMsgTime.wMinute,  // Minute
  &mRT.stMsgTime.wSecond,   // Sekunde
  &mRT.stMsgTime.wMilliseconds, // Millisekunde
  &mRT.dwTimeDiff,   // Zeitdauer der anstehenden Meldung
  &mRT.dwCounter,   // Interner Meldungsz?hler
  &mRT.dwFlags,   // Flags( intern )
  &mRT.wPValueUsed,
  &mRT.wTextValueUsed );

  if(mRT.dwMsgNr==1)
      {  printf(" No 1 alarm\r\n");
         bRet=PlaySound("C:\\mm.wav",NULL,SND_FILENAME|SND_ASYNC);
         if(bRet)   {MessageBeep((WORD)-1);}
       }
    if(mRT.dwMsgNr==2)
      {  printf(" No 2 alarm\r\n");

       }
   }
 MessageBeep((WORD)-1);
 return( TRUE );
 }
 关于gMsgFunction 的用法参考:
 http://support.automation.siemens.com/WW/view/en/15350783

提问者对于答案的评价:
很好

专家置评

albane的说法也对的,用vb脚本没问题。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc275274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • wincc 窗口切换的问题

    想做一个数据采集的picture,在一个单独的窗口中显示并运行,不受主画面切换的影响。 请教: 1,如何让这个picture window最小化?&n…

    SIMATIC WinCC 2019年6月11日
  • WINCC组态报警

    我用的是WINCC V6。0,请教如何让报警发出声音?谢谢! 最佳答案 WinCC V6的HORN中可以组态报警声音,配置比较简单。 提问者对于答案的评价:谢了

    SIMATIC WinCC 2019年6月11日
  • wincc6.0 sp3 项目激活后,不能登录

    wincc6.0sp3,项目激活后,不能登录,点击登录按钮,没反应。但把项目拷贝到其他电脑,正常. 最佳答案 1.与计算机名字无关,如果计算机名字不一致,哪激活都是不可能的;&nb…

    SIMATIC WinCC 2019年6月11日
  • wincc报警时间

    各位大侠好,我想请教下,wincc报警显示时我的时间排列是这样的:按照10点 10点01,10点02这样排列的,怎么设置让时间从10点02,10点01,10点排列呢? 最…

    SIMATIC WinCC 2018年12月5日
  • wⅰNCC6.0画面出现?

    wiNCC6.0画面移至另一台6.0画面出现? 问题补充:我是把WINCC6.0项目里的一个图形,移至到另一台WINCC6.0项目里,(不是移至整个项目,而是单独移至一个图形到另一…

    2021年7月5日
  • wincc如何打开别的项目的备份数据

    我有一个wincc项目,按照修改日期不同做了两个版本,其中两个版本各运行了一段时间,现在需要两个版本运行的数据曲线,有没有什么办法把两个版本的数据曲线放在一起? 最佳答案 WinC…

    SIMATIC WinCC 2021年7月5日
  • 点击阀门、电机弹出操作对话框

    我现在做的画面里的阀门和点击都是WINCC库里的图形,总数加起来上万个,想做点击他们弹出操作对话框,数量少可以直接用画面窗口来做,但是现在数量很多,希望高手能赐予C或者VB程序,好…

    SIMATIC WinCC 2019年6月11日
  • WINCC 中继器

    装WINCC的工控机(有CP5611)离CPU313C-2DP大约350米,请问需要加中继器吗?波特率187.5K,如果加,是否要加在CPU的柜子里? 最佳答案 如果CP5611连…

    SIMATIC WinCC 2019年6月11日
  • 请教一个WINCC的C脚本

    要求qd信号为0时给MD10赋值10 问题补充:赋值后为什么无法更改值了,有解决方法吗。 最佳答案 if (GetTagBit("qd")==0)Se…

    SIMATIC WinCC 2021年7月5日
  • wincc6.03和simatic net2005hf1有兼容性问题吗

    wincc6.03和simatic net2005hf1有兼容性问题吗?  wincc兼容性列表中说有 我没有net2005,只好安装了ne…

    SIMATIC WinCC 2019年6月11日