如何在 WinCC 中通过 C 脚本输出声音?

描述:
附件是一个小实例。该 C 动作位于按钮后,这样只需单击该按钮就可产生声音。

C 动作:

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code ("Winmm.dll ")
VOID WINAPI PlaySoundA ( char* pszSound, char* hmode, DWORD dwflag );
#pragma code()
PlaySoundA("C:Wit.400Mediatada.wav",NULL,1);
}

该功能需要有声卡。

PlaySoundA 函数的说明:

  1. 参数 char* pszSound:
    指定声音文件 (*.wav 文件) 的全路径。
  2. 参数 char* hmode:
    总为 0。
  3. 参数 DWORD dwflag:
    SND_SYNC = 0x0000:声音文件播放一次,该脚本一直等到播放结束
    SND_ASYNC = 0x0001:声音文件播放一次,同时并行处理该脚本
    SND_NODEFAULT = 0x0002:如果未找到该声音文件,则不播放默认值,而是什么也不播放。
    SND_LOOP = 0x0008:重复该声音文件直到下个 PlaySoundA 调用 (只能通过 0x0001) => 总是指定 0x0009。

    这些参数也可通过逐位逻辑‘或’进行组合 (如:SND_ASYNC | SND_LOOP)

注意事项:
如果想使用计算机内部扬声器的蜂鸣声而不是声音文件,则实现如下脚本:
由于寻址内部扬声器,无需声卡。

#include "apdefap.h"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code ("Kernel32.dll")
BOOL Beep( DWORD dwFreq, DWORD dwDuration);
//dwFreq 定义蜂鸣声的频率,单位:Hz

//dwDuration 指定蜂鸣声的持续时长,单位:ms
#pragma code()
Beep(1000,100);
//实例:频率:1000 Hz,100 ms
}

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

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论