📄 tce1.cpp
字号:
/**********************************************************
this project is mainly to show how to handle voice play
and record functions.
Before running this demo,your should make sure that your
computer has pluged with the TC-30E1(60E1) board and it is
connected with another TC-30E1(60E1) board in another
computer that running an application(such as dial.exe).
Oriental Co.,Ltd.
**********************************************************/
#include <windows.h>
#include <winbase.h>
#include <commctrl.h>
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>
#include "..\\..\\..\\..\\inc\\tce1_32.h"
#include "Tce1.h"
#include "resource.h"
///////////////////////////////////////////////////////////
TRUNK_STRUCT *Trunk ; //trunk channel data struct
int TotalTrunk ; //total trunk number
extern HWND hGWnd;
///////////////////////////////////////////////////////////
void yzDoTrunkWork()
{
DJSys_PushPlay() ;
for(int i=0 ; i< TotalTrunk ; i++ )
{
yzDrawState(i) ; //put on screen of the current trunk state
TrunkWork(i);
}
}
////////////////////////////////////////////////////////////
bool yzInitSystem()
{
int i = DJSys_EnableCard( "", "PROMPT.INI" ) ;
if ( i != 0 )
{
MessageBox(NULL,"Load Drive Fail!","Error", MB_OK ) ;
return false;
}
// DJSys_DisableWarn();
TotalTrunk = DJTrk_GetTotalTrunkNum() ;
Trunk = new TRUNK_STRUCT[TotalTrunk] ;
if( !Trunk )
{
DJSys_DisableCard();
MessageBox(NULL,"Memory alloc error!","Error", MB_OK ) ;
return false;
}
for(i = 0; i < TotalTrunk; i++)
{
Trunk[i].State= TRK_FREE;
DJTrk_SetTrunkType( i, Type_Import );
}
static int ColumnWidth[60] = {50, 50, 50, 100, 100, 100, 50, 150};
LV_COLUMN lvc;
char dig[10];
lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.iSubItem = 0;
lvc.pszText = "通道号" ;
lvc.cx = ColumnWidth[0];
ListView_InsertColumn(GetDlgItem(hGWnd,IDC_STATELIST),0,&lvc);
lvc.iSubItem = 1;
lvc.pszText = "DL信令" ;
lvc.cx = ColumnWidth[1];
ListView_InsertColumn(GetDlgItem(hGWnd,IDC_STATELIST),1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = "线路状态" ;
lvc.cx = ColumnWidth[2];
ListView_InsertColumn(GetDlgItem(hGWnd,IDC_STATELIST),2,&lvc);
lvc.iSubItem = 3;
lvc.pszText = "流程状态" ;
lvc.cx = ColumnWidth[3];
ListView_InsertColumn(GetDlgItem(hGWnd,IDC_STATELIST),3,&lvc);
lvc.iSubItem = 4;
lvc.pszText = "MFC" ;
lvc.cx = ColumnWidth[4];
ListView_InsertColumn(GetDlgItem(hGWnd,IDC_STATELIST),4,&lvc);
lvc.iSubItem = 5;
lvc.pszText = "DTMF" ;
lvc.cx = ColumnWidth[4];
ListView_InsertColumn(GetDlgItem(hGWnd,IDC_STATELIST),5,&lvc);
LV_ITEM lvi;
for(i = 0; i < TotalTrunk; i++)
{
lvi.mask = LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
itoa( i, dig, 10 ) ;
lvi.pszText = dig;
ListView_InsertItem(GetDlgItem(hGWnd,IDC_STATELIST),&lvi);
}
return true;
}
////////////////////////////////////////////////////////////
void yzExitSystem()
{
DJSys_DisableCard() ;
delete [] Trunk ;
}
////////////////////////////////////////////////////////////
void yzDrawState( int trkno )
{
char state[100]; ;
char tmpstr[20] ;
int dl ;
dl = DJTrk_GetTrunkForwardDL( trkno ) ;
if(dl>8) strcpy(state,"1");
else strcpy(state,"0");
if((dl%8) > 4 ) strcat(state,"1 ");
else strcat(state,"0 " ) ;
dl = DJTrk_GetTrunkBackwardDL( trkno ) ;
if( dl > 8 ) strcat(state,"1");
else strcat(state, "0" ) ;
if( (dl%8) > 4 ) strcat(state, "1");
else strcat(state, "0" ) ;
ListView_GetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 1, tmpstr, 19 ) ;
if ( strcmp(state,tmpstr )!=0)
ListView_SetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 1, state );
switch( DJTrk_GetTrunkStatus( trkno) )
{
case Step_Free: strcpy(state,"FREE"); break ;
case Step_Disable: strcpy(state,"DIS!"); break ;
case Step_Used: strcpy(state,"USED"); break ;
case Step_RecvCall: strcpy(state,"RCAL"); break ;
case Step_RecvMfc: strcpy(state,"RMFC"); break ;
case Step_StopMfc: strcpy(state,"RSTP"); break ;
case Step_ReadyDial: strcpy(state,"RDIL"); break ;
case Step_DialCall: strcpy(state,"DCAL"); break ;
case Step_DialMfc: strcpy(state,"DMFC"); break ;
case Step_DialStop: strcpy(state,"DSTP"); break ;
case Step_Delay: strcpy(state,"DLAY"); break ;
case Step_Wait: strcpy(state,"WAIT"); break ;
case Step_Connect: strcpy(state,"CONN"); break ;
case Step_RecvFail: strcpy(state,"RFAL"); break ;
case Step_DialFail: strcpy(state,"SFAL"); break ;
case Step_Block: strcpy(state,"BLK!"); break ;
case Step_OverTime: strcpy(state,"OVER"); break ;
default: strcpy(state," "); break ;
}
ListView_GetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 2, tmpstr, 19 ) ;
if ( strcmp(state,tmpstr )!=0)
ListView_SetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 2, state );
switch( Trunk[trkno].State )
{
case TRK_FREE:
strcpy(state,"空闲");
break ;
case TRK_WELCOME:
strcpy(state,"这里是东进电话银行演示系统");
break ;
case TRK_ACCOUNT:
strcpy(state,"请输入8位帐号") ;
break ;
case TRK_PASSWORD:
strcpy(state,"请输入6位密码");
case TRK_SELECT:
strcpy(state,"选择功能");
break;
case TRK_RECORDFILE:
strcpy(state,"录制留言");
break;
case TRK_PLAYRESULT:
strcpy(state,"播放查询结果");
break;
case TRK_PLAYRECORD:
strcpy(state,"播放留言");
break;
}
ListView_GetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 3, tmpstr, 19 ) ;
if ( strcmp(state,tmpstr )!=0)
ListView_SetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 3, state );
char * s;
s = DJTrk_GetMfcCode(trkno) ;
strcpy(state, s) ;
ListView_GetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 4, tmpstr, 19 ) ;
if ( strcmp(state,tmpstr )!=0)
ListView_SetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 4, state );
s=DJTrk_GetDtmfCode(trkno);
strcpy(state,s);
ListView_GetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 5, tmpstr, 19 ) ;
if ( strcmp(state,tmpstr )!=0)
ListView_SetItemText(GetDlgItem(hGWnd,IDC_STATELIST), trkno, 5, state );
}
void ResetTrunk(int trunkID)
{
int userID = DJTrk_GetConnectUserID( trunkID );
if( userID >= 0 )
DJExg_ClearLinkTrunkAndUserByTrunk( trunkID );
int voiceID = DJTrk_GetTrunkRecordID( trunkID );
if( voiceID >= 0 )
{
DJVoc_StopRecordFile(trunkID);
Trunk[trunkID].State = TRK_FREE;
}
else{
voiceID = DJTrk_GetTrunkPlayID( trunkID );
if( voiceID >= 0 ){
VoiceResourcesType resType = DJVoc_GetVoiceResourceType( voiceID );
if( resType == Res_File )
DJVoc_StopPlayFile(trunkID);
else if( DJVoc_GetVoiceOperateType( voiceID ) == OP_Play ){
DJExg_ClearLinkPlayVoiceFromTrunk( trunkID );
DJVoc_StopPlayFile(trunkID);
DJVoc_VoiceStop(voiceID);
}
}
}
DJTrk_BackwardHangUp( trunkID );
DJTrk_InitDtmfBuf(trunkID);
Trunk[trunkID].State = TRK_FREE;
}
void TrunkWork(int trunkID)
{
int VoiceID;
int result;
char FileName[200];
if(! DJTrk_CheckReady(trunkID) ) return;
if(DJTrk_CheckForwardHangUp(trunkID))
ResetTrunk( trunkID );
else if( DJTrk_GetTrunkStatus( trunkID ) != Step_Delay )
{
switch(Trunk[trunkID].State)
{
case TRK_FREE:
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.001");
result=DJVoc_PlayFileNew(trunkID,FileName,0,0);
Trunk[trunkID].State = TRK_WELCOME;
break;
case TRK_WELCOME:
VoiceID = DJTrk_GetTrunkPlayID(trunkID);
if(VoiceID<0)
{
MessageBox(NULL,"Get Voice ID Error!","Error",MB_OK);
ResetTrunk(trunkID);
}
else
{
if(DJVoc_CheckVoiceEnd(VoiceID)||(DJTrk_GetReciveDtmfNum(trunkID)>0))
{
DJVoc_StopPlayFile(trunkID);
strcpy(FileName,DJSys_GetInstallDir());
strcat(FileName,"voc\\bank.002");
DJVoc_PlayFile(trunkID,FileName);
Trunk[trunkID].State=TRK_ACCOUNT;
}
}
break;
case TRK_ACCOUNT:
VoiceID=DJTrk_GetTrunkPlayID(trunkID);
if(VoiceID>=0)
{
if(DJVoc_CheckVoiceEnd(VoiceID))
{
DJVoc_StopPlayFile(trunkID);
}
}
if(DJTrk_GetReciveDtmfNum(trunkID)>=8)
{
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
DJTrk_InitDtmfBuf(trunkID);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.003");
DJVoc_PlayFile(trunkID,FileName);
Trunk[trunkID].State = TRK_PASSWORD;
}
break;
case TRK_PASSWORD:
VoiceID=DJTrk_GetTrunkPlayID(trunkID);
if(VoiceID>=0)
{
if(DJVoc_CheckVoiceEnd(VoiceID))
{
DJVoc_StopPlayFile(trunkID);
}
}
if(DJTrk_GetReciveDtmfNum(trunkID)>=6)
{
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
DJTrk_InitDtmfBuf(trunkID);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.004");
DJVoc_PlayFile(trunkID,FileName);
Trunk[trunkID].State = TRK_SELECT;
}
break;
case TRK_SELECT:
VoiceID=DJTrk_GetTrunkPlayID(trunkID);
if(VoiceID>=0)
{
if(DJVoc_CheckVoiceEnd(VoiceID))
{
DJVoc_StopPlayFile(trunkID);
}
VoiceID=-1;
}
if(DJTrk_GetReciveDtmfNum(trunkID)>0)
{
char Code = DJTrk_GetLastDtmfCode(trunkID);
DJTrk_InitDtmfBuf(trunkID);
switch(Code)
{
case '1':
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
DJVoc_InitIndexPlayFile(trunkID);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.005");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d5");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d12");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d8");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d11");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d9");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d10");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d6");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d15");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d8");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.008");
DJVoc_AddIndexPlayFile(trunkID,FileName);
DJVoc_StartIndexPlayFile(trunkID);
Trunk[trunkID].State = TRK_PLAYRESULT;
break;
case '2':
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
DJVoc_InitIndexPlayFile(trunkID);
strcpy(FileName,DJSys_GetInstallDir());
strcat(FileName,"voc\\bank.006");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d0");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d15");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d4");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d8");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.008");
DJVoc_AddIndexPlayFile(trunkID,FileName);
DJVoc_StartIndexPlayFile(trunkID);
Trunk[trunkID].State = TRK_PLAYRESULT;
break;
case '3':
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
DJVoc_InitIndexPlayFile(trunkID);
strcpy(FileName,DJSys_GetInstallDir());
strcat(FileName,"voc\\bank.007");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d3");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d13");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d7");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\d12");
DJVoc_AddIndexPlayFile(trunkID,FileName);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\bank.008");
DJVoc_AddIndexPlayFile(trunkID,FileName);
DJVoc_StartIndexPlayFile(trunkID);
Trunk[trunkID].State = TRK_PLAYRESULT;
break;
/*
case '4':
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\test.voc");
DJVoc_RecordFile(trunkID,FileName,8000*320);
Trunk[trunkID].State = TRK_RECORDFILE;
break;
case '5':
if(VoiceID>0) DJVoc_StopPlayFile(trunkID);
strcpy ( FileName, DJSys_GetInstallDir () );
strcat ( FileName, "voc\\test.voc");
if(DJVoc_PlayFile(trunkID,FileName))
Trunk[trunkID].State = TRK_PLAYRECORD;
else ResetTrunk(trunkID);
break;
*/
default:
break;
}
}
break;
case TRK_PLAYRESULT:
if(DJVoc_CheckIndexPlayEnd(trunkID))
{
DJVoc_StopIndexPlayFile(trunkID);
ResetTrunk(trunkID);
}
break;
case TRK_RECORDFILE:
VoiceID = DJTrk_GetTrunkPlayID(trunkID);
if(DJVoc_CheckVoiceEnd(VoiceID))
{
DJVoc_StopRecordFile(trunkID);
ResetTrunk(trunkID);
break;
}
if(DJTrk_GetReciveDtmfNum(trunkID) >= 1)
{
if(DJTrk_GetLastDtmfCode(trunkID) == '5')
{
DJVoc_StopRecordFile(trunkID);
ResetTrunk(trunkID);
}
}
break;
case TRK_PLAYRECORD:
VoiceID=DJTrk_GetTrunkPlayID(trunkID);
if(VoiceID<0)
{
MessageBox(NULL,"Get Voice ID Error!","Error",MB_OK);
ResetTrunk(trunkID);
}
else
{
if(DJVoc_CheckVoiceEnd(VoiceID))
{
DJVoc_StopPlayFile(trunkID);
ResetTrunk(trunkID);
}
}
break;
}//end switch
}//end if
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -