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

📄 function.cpp

📁 三汇CTI示例程序源码
💻 CPP
字号:

#include "function.h"

#define BUFSIZE		1024			//buffer size
unsigned char szRecBuf1[BUFSIZE];	//record buffer 1
unsigned char szRecBuf2[BUFSIZE];	//record buffer 2
unsigned char szRecBuf3[BUFSIZE];	//record buffer 3
unsigned char szPlayBuf1[BUFSIZE];	//play buffer 1
unsigned char szPlayBuf2[BUFSIZE];	//play buffer 2
unsigned char szPlayBuf3[BUFSIZE];	//play buffer 3
char szErrMsg[300];					//error message
BOOL bMemIsInUse;	//flag of use buffer
extern int nChRec;
extern int nChPlay;

BOOL InitCtiSystem()
{
	char szIni[MAX_PATH], szIndex[MAX_PATH];
	
	strcpy(szIni, "ShConfig.ini");
	strcpy(szIndex, "ShIndex.ini");

	if(SsmStartCti(szIni, szIndex) != 0) 
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
    }	
	return TRUE;
}


BOOL RecStart(int nCh)
{
	if(SsmRecordMemBlock(nCh, 6, szRecBuf1, DWORD(BUFSIZE), RecordCallBack, NULL) != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	if(SsmRecordMemBlock(nCh, 6, szRecBuf2, DWORD(BUFSIZE), RecordCallBack, NULL) != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	return TRUE;
}


BOOL RecEnd(int nCh)
{
	if(SsmStopRecordMemBlock(nCh) != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	return TRUE;
}


BOOL PlayStart(int nCh)
{
	if(SsmPlayMemBlock(nCh, 6, szPlayBuf1, DWORD(BUFSIZE), PlayCallBack, NULL) != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	if(SsmPlayMemBlock(nCh, 6, szPlayBuf2, DWORD(BUFSIZE), PlayCallBack, NULL) != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	return TRUE;
}


BOOL PlayEnd(int nCh)
{
	if(SsmStopPlayMemBlock(nCh) != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	return TRUE;
}


BOOL SendData(PUCHAR pucBuf)
{	
	if(pucBuf == szRecBuf1)
	{
		memcpy(szPlayBuf1, szRecBuf1, BUFSIZE);
	}
	else if(pucBuf == szRecBuf2)
	{
		memcpy(szPlayBuf2, szRecBuf2, BUFSIZE);
	}
	else if(pucBuf == szRecBuf3)
	{
		memcpy(szPlayBuf3, szRecBuf3, BUFSIZE);
	}
	else
	{
		return FALSE;
	}
	return TRUE;
}


BOOL WINAPI RecordCallBack(int ch, int nEndReason, PUCHAR pucBuf, DWORD dwStopOffset, PVOID pV)
{
	int nResult = 0;

	if((nEndReason != 4) || (dwStopOffset < DWORD((BUFSIZE-1))))
	{
		return FALSE;
	}

	if(pucBuf == szRecBuf1)
	{
		SendData(szRecBuf1);
		nResult = SsmRecordMemBlock(ch, 6, szRecBuf3, DWORD(BUFSIZE), RecordCallBack, pV);
	}
	else if(pucBuf == szRecBuf2)
	{	
		SendData(szRecBuf2);
		if(!bMemIsInUse)
		{
			PlayStart(nChPlay);
		}
		bMemIsInUse = TRUE;
		nResult = SsmRecordMemBlock(ch, 6, szRecBuf1, DWORD(BUFSIZE), RecordCallBack, pV);
	}
	else if(pucBuf == szRecBuf3)
	{
		SendData(szRecBuf3);
		nResult = SsmRecordMemBlock(ch, 6, szRecBuf2, DWORD(BUFSIZE), RecordCallBack, pV);
	}
	else
	{
		return FALSE;
	}

	if(nResult != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	return TRUE;
}


BOOL WINAPI PlayCallBack(int ch, int nEndReason, PUCHAR pucBuf, DWORD dwStopOffset, PVOID pV)
{
	int nResult = 0;

	if(nEndReason != 1)
	{
		return FALSE;
	}

	if(pucBuf == szPlayBuf1)
	{
		nResult = SsmPlayMemBlock(nChPlay, 6, szPlayBuf3, DWORD(BUFSIZE), PlayCallBack, pV);
	}
	else if(pucBuf == szPlayBuf2)
	{
		nResult = SsmPlayMemBlock(nChPlay, 6, szPlayBuf1, DWORD(BUFSIZE), PlayCallBack, pV);
	}
	else if(pucBuf == szPlayBuf3)
	{
		nResult = SsmPlayMemBlock(nChPlay, 6, szPlayBuf2, DWORD(BUFSIZE), PlayCallBack, pV);
	}
	else
	{
		return FALSE;
	}
	
	if(nResult != 0)
	{
		SsmGetLastErrMsg(szErrMsg);
		cout<<szErrMsg<<endl;
		return FALSE;
	}
	return TRUE;
}



⌨️ 快捷键说明

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