当前位置: 主页 > PLC控制

控件记录中存在报警时播放音乐

以下是脚本,请高手指点是否有错误,经常导致wincc画面异常,删除此全局脚本后,画面运行正常,谢谢!

#include"apdefap.h"
intgscAction(void)
{
MSG_RTDATA_STRUCTmRT;
inti;
char*pszToken;//Nowismycode
#pragmacode("winmm.dll")
BOOLWINAPIsnDPlaySoundA(char*szWave,DWORDdwFlag);
#pragmacode()
DWORDSND_ASYNC=0x0001;
DWORDSND_LOOP=0x0008;
DWORDalarmsum,alarmunack;
LPCMN_ERRORerrorunack,errorsum;
#pragmacode("msrtcli.dll")
#pragmacode()
LPDWORDlpdwServiceID;
MSG_SERVICE_NOTIFY_PROClpfnNotifyProc;
LPMSG_FILTER_STRUCTlpMsgFilter;
DWORDdwNotityMask;
LPVOIDlpvUser;
LPCMN_ERRORlpError;
BOOLn1;
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:\\Horn_Attention.WAV",SND_ASYNC|SND_LOOP);
else
sndPlaySoundA(NULL,SND_ASYNC);
//sndPlaySoundA("D:Horn_Attention.WAV",SND_ASYNC|SND_LOOP);
}
//WINCC:TAGNAME_SECTION_START
//syntax:#defineTagNameInAction"DMTagName"
//nextTagID:1
//WINCC:TAGNAME_SECTION_END
//WINCC:PICNAME_SECTION_START
//syntax:#definePicNameInAction"PictureName"
//nexTPicID:1
//WINCC:PICNAME_SECTION_END
return1;
}

最佳答案

直接用wincc自带过程组建horn吧,这个组态简单,而且不耗费wincc资源

http://www.ad.siemens.com.cn/download/docMessage.aspx?Id=2580&

视频:

WinCC跟我做:WinCC实现声音报警的方法
http://www.ad.siemens.com.cn/Service/elearning/cn/Course.aspx?CourseID=892&

提问者对于答案的评价:
简单实用

  • 关注微信

猜你喜欢

微信公众号