请教“tgtt”兄台,麻烦您再给在下注解一下我以前求助的一段C程序,不胜感激!!!

已锁定

阳澄湖

  • 帖子

    139
  • 精华

    1
  • 被关注

    0

论坛等级:游士

注册时间:2004-01-31

普通 普通 如何晋级?

请教“tgtt”兄台,麻烦您再给在下注解一下我以前求助的一段C程序,不胜感激!!!

1011

8

2005-01-10 23:12:24

我在WINCC 6。0的全局脚本中写了精华版中的声音报警的一段程序,出现以下的问题:



在运行状态下点击一个利用WINCC向导组态为退出WINCC运行状态的按钮后,出现提示“动作仍在执行,是否退出动作?”不管是选择“退出动作”还是选择“不退出动作”,都可进入组态状态,而后再激活项目,进入运行状态,第一次点一些用C脚本组态的按钮可正常运行,但第二次再点同样这些按钮时则无效!

删除这段脚本后,无上面讲的提示,而且一切正常!西门子支持说这个声音脚本有问题!!!???



以下是这段肢本:





在全局脚本里面新建一个循环的东东,可以设置 2s,代码如下







#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("C:\\Program Files\\Windows NT\\Pinball\\SOUND36.WAV",SND_ASYNCSND_LOOP);



else



sndPlaySoundA(NULL,SND_ASYNC);





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







}





return 1;



}

请教“tgtt”兄台,麻烦您再给在下注解一下我以前求助的一段C程序,不胜感激!!! 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32572条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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