2024年6月3日发(作者:)

WinCC中如何播放声音文件(上)——获得项目路径:

文章标签: wincc

项目函数GetProjectPath

·将一个字符串变量传送给项目函数,已确定的项目路径将写入到该变量中。函

数的调用者务必确保 为该字符串变量保留了足够的存储空间。如果已成功地执

行了函数,则可看到其返回值。

·定义并初始化一个数据类型为BOOL的bRet变量。

·下一步,定义了一个szProjectFile的字符串变量,用于接收项目名称。此外,

将字符串变量定义为 char*类型,并使用NULL对其进行初始化。

·接下来,定义一个CMN_ERROR数据类型的变量。

·通过API函数DMGetRuntimeProject()可确定项目的名称。

·下一步,strrchr()函数将对已确定的项目文件名称中处于“”字符的最后位

置进行搜索。在所发 现的字符后面的一个位置上,插入一个0。仅将保留项目

文件的路径,而不保留项目文件名称自身。

·所确定的项目路径将通过strcpy()函数复制给所传送的字符串变量。

BOOL GetProjectPath(char* lpstrProjectPath)

{

BOOL bRet = FALSE;

char szProjectFile[_MAX_PATH+1];

char* psz = NULL;

CMN_ERROR Error;

bRet = DMGetRuntimeProject(szProjectFile,_MAX_PATH+1,&Error);

if (bRet == FALSE)

{

return FALSE;

}

psz = strrchr (szProjectFile,'');

if (psz == NULL)

{

return FALSE;

}

*(psz+1) = 0;

strcpy(lpstrProjectPath,szProjectFile);

return TRUE;

}

WinCC中如何播放声音文件(下)——播放声音文件:

文章标签: wincc

项目函数CC_PlaySound

·在第一部分中,集成apdefap.h文件。通过该文件,当前项目函数也可以调 用

其它项目函数。

·函数标题定义了一个字符串变量,作为传送参数。使用该变量,可传送要播 放

的声音文件的名称。

·在第二部分中,集成Windows DLL winmm。由于只需要 DLL 的一个函 数,因

此直接声明该函数。此外,还定义两个符号常量。

·该项目函数假定项目文件夹中存在一个声音子文件夹。在该文件夹中,存储 项

目中使用的声音文件。所期望声音文件的路径包括项目路径,声音文件夹 的名

称以及所传送的声音文件的名称。它将存储在变量szSoundPath中。

·通过Windows函数PlaySound()即可播放该声音。如果不能播放声音文 件,

则通过Windows函数MessageBeep()产生简短的蜂鸣声来代替声音文 件。

#include "apdefap.h"

void CC_PlaySound(char* lpszSoundFile)

{

#pragma code("")

BOOL PlaySound( LPCTSTR lpszSound,HMODULE hModule,DWORD dwSound);

#define SND_FILENAME 0x00020000L

#define SND_ASYNC 0x0001

#pragma code()

BOOL bRet = FALSE;

char szProjectPath[_MAX_PATH];

char szSoundPath[_MAX_PATH];

GetProjectPath(szProjectPath); //Return-Type: BOOL

sprintf( szSoundPath,"%sSound%s",szProjectPath,lpszSoundFile);

bRet = PlaySound( szSoundPath,NULL,SND_FILENAME|SND_ASYNC);

if (bRet == FALSE)

{

MessageBeep((WORD)-1);

}

}