加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2011-04-09 00:42:41)
标签:

杂谈

分类: WinCC

如何在 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:\\Winnt.400\\Media\\tada.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
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有