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

📄 recorddlg.cpp

📁 三汇CTI示例程序源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -