📄 function.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 + -