📄 recorddlg.cpp
字号:
ListenChannel=MaxLine;
}
void CRecordDlg::OnBUTTONPlay()
{
// TODO: Add your control notification handler code here
char szErrMsg[200];
if (SsmPlayFile(0, "Test.wav", -1, 0, 0xffffffff)==-1)
{
SsmGetLastErrMsg(szErrMsg);
AfxMessageBox(szErrMsg, MB_OK, 0);
}
}
void CRecordDlg::AppErrorHandler(int ch)
{
SsmGetLastErrMsg(ChannelState[ch].pErrMsg.GetBuffer(200));
ChannelState[ch].WorkState = TRK_IDLE;
}
void CRecordDlg::OnBUTTONStopPlay()
{
// TODO: Add your control notification handler code here
char szErrMsg[200];
if ((SsmCheckPlay(0)==0)&&(SsmStopPlayFile(0)==-1)||(SsmCheckPlay(0)==-1))
{
SsmGetLastErrMsg(szErrMsg);
AfxMessageBox(szErrMsg, MB_OK, 0);
}
}
void CRecordDlg::ScanChannelState ()
{
int i;
char temp1[1];
char temp2[1];
for (i=0;i<MaxLine;i++)
if (SsmGetChType(i)==3)
{
switch (ChannelState[i].WorkState )
{
case TRK_IDLE:
{
if(DetectPickUp(i)== 1 )
{
ChannelState[i].WorkState =TRK_PICKUP;
if (ChannelState[i].ConState ==YAKONG)
{
SsmRecToFile(i,"Test.wav",-1,0L,10L*8000L,10,0);
if (ChannelState[i].ListenState == Listen)
PlayListen(0, i);
ChannelState[i].WorkState =TRK_RECORD;
}
}
if(DetectEmpty(i)==1)
{
ChannelState[i].WorkState =TRK_OUTLINE;
}
break;
} /////////////////TRK_IDLE
case TRK_PICKUP:
{
switch (ChannelState[i].ConState )
{
case SHENGKONG:
{
if (SsmDetectBargeIn(i)==1)
{
SsmRecToFile(i,"Test.wav",-1,0L,0xffffffff,10,0);
if (ChannelState[i].ListenState ==Listen)
PlayListen(0, i);
ChannelState[i].WorkState =TRK_RECORD;
}
break;
} ////////////SHENGKONG
case YAKONG:
{
if(DetectPickUp(i)== 1 )
{
SsmRecToFile(i,"Test.wav",-1,0L,10L*8000L,10,0);
if (ChannelState[i].ListenState ==Listen)
PlayListen(0, i);
ChannelState[i].WorkState =TRK_RECORD;
}
break;
}
case MAKONG:
{
SsmGetLastDtmf(i,temp1);
if ((*temp1)=='*')
{
SsmRecToFile(i,"Test.wav",-1,0L,10L*8000L,10,0);
if (ChannelState[i].ListenState ==Listen)
PlayListen(0, i);
ChannelState[i].WorkState =TRK_RECORD;
ClearDTMFBuf(i);
}
break;
} //////////////MAKONG
} /////////////////SWITCH CONSTATE
if (DetectEmpty(i)==1)
ChannelState[i].WorkState =TRK_OUTLINE;
if (SsmGetChState(i)==0)
ChannelState[i].WorkState =TRK_IDLE;
break;
}/////////////////PICKUP
case TRK_RECORD:
{
switch (ChannelState[i].ConState )
{
case MAKONG:
{
SsmGetLastDtmf(i,temp2);
if ((*temp2)=='*')
{
SsmStopRecToFile(i);
ChannelState[i].WorkState = TRK_PICKUP;
strcpy(temp2,"");
ClearDTMFBuf(i);
}
break;
} //////////////MAKONG
case SHENGKONG:
{
if (SsmDetectNoSound(i)==1)
{
SsmStopRecToFile(i);
ChannelState[i].WorkState =TRK_PICKUP;
}
break;
} //////////////////SHENGKONG
case YAKONG:
{
if (DetectPickUp(i)==0)
{
SsmStopRecToFile(i);
ChannelState[i].WorkState =TRK_IDLE;
}
break;
} /////////////YAKONG
} /////////switch
if (DetectEmpty(i)==1)
{
SsmStopRecToFile(i);
ChannelState[i].WorkState = TRK_OUTLINE;
}
if (SsmGetChState(i)==0)
{
SsmStopRecToFile(i);
ChannelState[i].WorkState = TRK_IDLE;
}
if (ChannelState[i].ListenState ==Listen)
PlayListen(0, i);
else
StopListen(0);
break;
}
case TRK_OUTLINE:
{
if (DetectEmpty(i)==0)
ChannelState[i].WorkState = TRK_IDLE;
break;
} ////////////TRK_OUTLINE
}
}
}
void CRecordDlg::OnRADIOConState()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int CurLine;
CurLine=m_CurLine.GetCurSel ();
ChannelState[CurLine].ConState=SHENGKONG;
}
void CRecordDlg::OnRADIOConState1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int CurLine;
CurLine=m_CurLine.GetCurSel ();
ChannelState[CurLine].ConState=YAKONG;
}
void CRecordDlg::OnRADIOConState2()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int CurLine;
CurLine=m_CurLine.GetCurSel ();
ChannelState[CurLine].ConState=MAKONG;
}
void CRecordDlg::OnSelchangeCOMBOCurLine()
{
// TODO: Add your control notification handler code here
int CurLine;
CurLine=m_CurLine.GetCurSel ();
switch (ChannelState[CurLine].ConState)
{
case SHENGKONG: m_Constate=0; break;
case YAKONG: m_Constate=1; break;
case MAKONG: m_Constate=2; break;
}
UpdateData(FALSE);
}
LRESULT CRecordDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
return CDialog::WindowProc(message, wParam, lParam);
}
DWORD CRecordDlg::MyThreadFunction(LPVOID lparam)
{
int ch,nNewState;
char temp1[1];
char temp2[1];
MESSAGE_INFO EventBuffer;
DWORD Param;
CRecordDlg *pCRecordDlg =(CRecordDlg*)lparam;
while(1)
{
Sleep(10);
if(SsmWaitForEvent(50,&EventBuffer)==0)
{
switch(EventBuffer.wEventCode)
{
case E_SYS_BargeIn:
{
ch=EventBuffer.nReference;
if(pCRecordDlg->ChannelState[ch].WorkState==TRK_PICKUP)
{
if(pCRecordDlg->ChannelState[ch].ConState==SHENGKONG)
{
SsmRecToFile(ch,"Test.wav",-1,0L,0xffffffff,10,0);
OutputDebugString("Voice-Control Record");
if (pCRecordDlg->ChannelState[ch].ListenState ==Listen)
PlayListen(0, ch);
pCRecordDlg->ChannelState[ch].WorkState =TRK_RECORD;
}
}
}
break;
case E_SYS_TIMEOUT:
{
pCRecordDlg->UpdateChannelState();
}
break;
case E_CHG_ChState:
{
ch=EventBuffer.nReference;
Param=EventBuffer.dwParam;
nNewState=(int)(Param&0xFFFF);
if(SsmGetChType(ch)==3)
{
if(nNewState==0)
{
pCRecordDlg->ChannelState[ch].WorkState=TRK_IDLE;
SsmStopRecToFile(ch);
}
else if(nNewState==1)
{
pCRecordDlg->ChannelState[ch].WorkState=TRK_PICKUP;
}
else if (nNewState==8)
{
pCRecordDlg->ChannelState[ch].WorkState=TRK_OUTLINE;
}
switch(pCRecordDlg->ChannelState[ch].WorkState)
{
case TRK_PICKUP:
{
switch (pCRecordDlg->ChannelState[ch].ConState )
{
case YAKONG:
{
if(DetectPickUp(ch)== 1 )
{
int tt= SsmRecToFile(ch,"Test.wav",-1,0L,10L*8000L,10,0);
if(tt==0)
OutputDebugString("Voltage-control record");
if (pCRecordDlg->ChannelState[ch].ListenState ==Listen)
PlayListen(0, ch);
pCRecordDlg->ChannelState[ch].WorkState =TRK_RECORD;
}
break;
}
} /////////////////SWITCH CONSTATE
break;
}//pickup
break;
case TRK_OUTLINE:
{
if (DetectEmpty(ch)==0)
pCRecordDlg->ChannelState[ch].WorkState = TRK_IDLE;
}//outline
break;
default:
break;
}
}
}
break;
case E_PROC_RecordFile:
{
ch=EventBuffer.nReference;
pCRecordDlg->ChannelState[ch].WorkState =TRK_RECORD;
if (pCRecordDlg->ChannelState[ch].ConState== YAKONG)
{
if (DetectPickUp(ch)==0)
{
SsmStopRecToFile(ch);
pCRecordDlg->ChannelState[ch].WorkState =TRK_IDLE;
}
}
}
break;
case E_CHG_RcvDTMF:
{
int nResult;
ch=EventBuffer.nReference;
Param=EventBuffer.dwParam;
nResult=(int)(Param&0xFFFF);
wsprintf(temp1,"%c",nResult);
if(pCRecordDlg->ChannelState[ch].WorkState==TRK_PICKUP)
{
if(pCRecordDlg->ChannelState[ch].ConState==MAKONG)
{
if ((*temp1)=='*')
{
SsmRecToFile(ch,"Test.wav",-1,0L,10L*8000L,10,0);
if (pCRecordDlg->ChannelState[ch].ListenState ==Listen)
PlayListen(0, ch);
pCRecordDlg->ChannelState[ch].WorkState =TRK_RECORD;
ClearDTMFBuf(ch);
}
}
}
else if(pCRecordDlg->ChannelState[ch].WorkState==TRK_RECORD)
{
if(pCRecordDlg->ChannelState[ch].ConState==MAKONG)
{
SsmGetLastDtmf(ch,temp2);
if ((*temp2)=='*')
{
SsmStopRecToFile(ch);
pCRecordDlg->ChannelState[ch].WorkState = TRK_PICKUP;
strcpy(temp2,"");
ClearDTMFBuf(ch);
}
}
}
}
break;
case E_SYS_NoSound:
{
ch=EventBuffer.nReference;
if(pCRecordDlg->ChannelState[ch].WorkState==TRK_RECORD)
{
if(pCRecordDlg->ChannelState[ch].ConState==SHENGKONG)
{
SsmStopRecToFile(ch);
pCRecordDlg->ChannelState[ch].WorkState =TRK_PICKUP;
}
}
}
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -