⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wave.cpp

📁 实现智能大厦自动报警系统主要是通过串口通信来实现的。计算机对数模转换设备发送到端口的数据进行处理
💻 CPP
字号:
// Wave.cpp: implementation of the CWave class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "yhjk.h"
#include "Wave.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CWave::CWave()
{

}

CWave::~CWave()
{
}
void CWave::Play(CWnd * pWnd,CString sPatch)
{
	MCI_OPEN_PARMS mciOpen;
	memset(&mciOpen,0,sizeof(MCI_OPEN_PARMS));
	mciOpen.lpstrElementName=sPatch;
	//打开
	DWORD dwResult=mciSendCommand(m_nDeviceID,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);
	if(dwResult)
	{
		DisplayErrorMsg(dwResult);
		m_nElementID=NULL;
	}
	else
	{
		//保存音频元素标识
		m_nElementID=mciOpen.wDeviceID;
		MCI_PLAY_PARMS mciPlay;
		mciPlay.dwCallback=(DWORD)pWnd->GetSafeHwnd();
		//播放WAV
		dwResult=mciSendCommand(m_nElementID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciPlay);
		if(dwResult)
		{
			DisplayErrorMsg(dwResult);
			Stop();	
		}
	}
}

void CWave::DisplayErrorMsg(DWORD dwError)
{
	if(dwError)
	{
		char szErrMsg[MAXERRORLENGTH];
		if(!mciGetErrorString(dwError,szErrMsg,sizeof(szErrMsg)))
			strcpy(szErrMsg,"未知错误");
		AfxMessageBox(szErrMsg);
	}
}

void CWave::Stop()
{
	DWORD dwResult=0;
	if(m_nElementID)
	{
		dwResult=mciSendCommand(m_nElementID,MCI_CLOSE,NULL,NULL);
		if(dwResult)
			DisplayErrorMsg(dwResult);
		else
			m_nElementID=0;
	}
}

void CWave::OpenDevice()
{
	DWORD dwResult=0;
	if(!m_nDeviceID)
	{
		MCI_OPEN_PARMS mciOpenParms;
		mciOpenParms.lpstrDeviceType=(LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
		//打开波形设备
		dwResult=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,(DWORD)(LPVOID)&mciOpenParms);
		m_nDeviceID=mciOpenParms.wDeviceID;
		if(dwResult)
		{
			DisplayErrorMsg(dwResult);
			m_nDeviceID=NULL;
		}
	}	
}

void CWave::CloseDevice()
{
	DWORD dwResult=0;
	if(m_nDeviceID)
		dwResult=mciSendCommand(m_nDeviceID,MCI_CLOSE,NULL,NULL);
	if(dwResult)
		DisplayErrorMsg(dwResult);	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -