求wincc声音报警代码

最近做了个项目,写在报警记录中的报警条目都是从无符号32位变量中取位的形式,现在要求所有的报警都发出一个报警声音,想请师傅们给我一段全局代码:要求只要是报警记录中的任何一个报警来了,就触发声音文件从音响中发出声音。 (还有我从网上搜了一段代码,我也看不太懂,也没试成功)
#include "apdefap.h"


int gscAction( void )

{

MSG_RTDATA_STRUCT mRT;

int i;

char* pszToken;

//Now is my code

#pragma code("Winmm.dll")

BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);

#pragma code()

DWORD SND_ASYNC=0x0001;

DWORD SND_LOOP=0x0008;

DWORD alarmsum,alarmunack;

LPCMN_ERROR errorunack,errorsum;

#pragma code("msrtcli.dll")

#pragma code()

LPDWORD lpdwServiceID;

MSG_SERVICE_NOTIFY_PROC lpfnNotifyProc;

LPMSG_FILTER_STRUCT lpMsgFilter;

DWORD dwNotifyMask;

LPVOID lpvUser;

LPCMN_ERROR lpError;

BOOL n1;

n1=MSRTGetMsgQuit(&alarmunack,errorunack);

SetTagDWord("number",alarmunack);

MSRTGetMsgActual(&alarmsum,errorsum);

SetTagDWord("sum",alarmsum);

if (alarmsum==0)

sndPlaySoundA(NULL,SND_ASYNC);

else

{

if (alarmunack>0)

sndPlaySoundA("D:\HMI\yao0903\ALARM8.WAV",SND_ASYNC|SND_LOOP);

else

sndPlaySoundA(NULL,SND_ASYNC);

//sndPlaySoundA("C:\windows\media\office97\laser.wav",SND_ASYNC|SND_LOOP);

}

return 1;

}

最佳答案

你所提供的代码是利用GMsgFunction函数来进行声音的触发,不过光有代码是没有用的,在报警记录中必须要勾选“触发一个动作”才会调用该函数,关于GMsgFunction的详细使用方法可在找答案或论坛中搜索一下。

另外还需要调试的是发声代码,建议你放到按钮中进行调试。

最后建议,最简单的方法还是用Horn。

提问者对于答案的评价:
多谢指点。还是采用HORN控件好了。

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

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

相关推荐