WINCC6.2
WINCC6.2中的C脚本当QRR为1时,Alarm03.wav响10次;
当QRR为0时,Alarm04.wav响1次;
#include "apdefap.h"
int gscAction( void )
{
#pragma option(mbcs)
static BOOL QRR = TRUE;
#pragma code("winmm.dll")
void WINAPI PlaySoundA(char*pszSound,char*hmode,DWORD dwFlag);
#pragma code()
if(QRR)
{
PlaySoundA("c:\\Alarm03.wav", NULL, 10);
QRR = FALSE;
}
else
{
PlaySoundA("c:\\Alarm04.wav", NULL, 1);
QRR = TRUE;
}
return 0;
}
这是一个WINCC6.2中的C脚本,当QRR为1时,播放Alarm03.wav文件10次;当QRR为0时,播放Alarm04.wav文件1次。代码中使用了Windows API函数PlaySoundA来进行音频播放。
在代码中,首先声明了静态变量QRR,并将其初始化为TRUE。然后通过#pragma code("winmm.dll")指令将代码切换到winmm.dll库中,并调用PlaySoundA函数来播放对应的音频文件。最后根据QRR的值来选择播放哪个音频文件并对QRR进行取反操作。函数返回0表示执行成功。 想要QRR由0变1时 播放Alarm03.wav文件10次;
QRR为0时,播放Alarm04.wav文件1次;
触发器该如何设置呢,是设置周期触发还是连接变量QRR 这般难离舍 发表于 2023-04-12 11:03
想要QRR由0变1时 播放Alarm03.wav文件10次;
QRR为0时 ...
要实现QRR由0变1时播放Alarm03.wav文件10次,QRR为1时播放Alarm04.wav文件1次的功能,可以使用WinCC中的周期触发器,而不是连接变量QRR。
具体步骤如下:
1. 在WinCC中创建一个周期触发器。在WinCC资源管理器界面中,右键点击“周期触发”下的任意一个项目,然后选择“添加周期触发”。按照向导指引,设置触发器的名称、触发时间、触发周期等参数。
2. 在周期触发器的动作脚本中,添加如下代码:
#include "apdefap.h"
static BOOL QRR = FALSE;
#pragma code("winmm.dll")
void WINAPI PlaySoundA(char* pszSound, char* hmod, DWORD fdwSound);
#pragma code()
if (QRR)
{
PlaySoundA("c:\\Alarm04.wav", NULL, 1);
}
else
{
PlaySoundA("c:\\Alarm03.wav", NULL, 10);
}
QRR = !QRR;
return 0;
这段代码与上面提供的代码类似。唯一的区别是,我们将QRR的初始值设置为FALSE(即0),并在QRR变量取反之前,先播放Alarm04.wav文件,再播放Alarm03.wav文件。
3. 最后,在WinCC画面编辑器中选中周期触发器,并将其拖拽到需要使用的画面中。打开触发器的属性设置界面,将“动作脚本文件名”设置为上面保存的动作脚本文件,保存设置并返回画面编辑器界面。
现在,当周期触发器执行时,它会定期调用动作脚本来播放指定的音频文件。每次调用时,QRR都会取反,并根据取反后的值来选择播放哪个音频文件。
页:
[1]