📄 dbtestview.cpp
字号:
break;
/******播放提示语音文件时对用户挂机、按键进行相应处理,无操作时重复播放******/
case WS_PLAY :
/*
Can't call TW_CheckSignal(...) here
*/
//当用户挂机时
if (TW_MonitorBusy (i, SIG_BUSY1, 5) || TW_MonitorBusy (i, SIG_BUSY2, 5))
{
sprintf (ChMess[i], "通道%2d (外线) : 在播放提示音期间用户挂机.", i);
ChPaint (i);
TW_StopPlayFile (i);
TW_StopPlayFile(3); //放音模块放音
TW_HangUpCtrl (i);
CS[i] = WS_HANGUP;
}
//当用户有按键时
else if((dtmf=TW_GetDTMFChar (i)) != -1)
{
TW_StopPlayFile(i);
TW_StopPlayFile(3);
/*************在初使状态时按键***************/
if(inputchar[i]==START)
{
switch (dtmf)//根据按键不同转入不同功能
{
case '1' ://进入投诉功能
inputchar[i]=APPEAL;
strcpy(filename[i] , chooseappeal);
break;
case '2' ://进入留言功能
inputchar[i]=LEAVEWORD;
strcpy(filename[i] , leaveword);
break;
case '3' ://进入查询功能
inputchar[i]=INQUIRE;
strcpy(filename[i] , chooseinf);
break;
case '0' ://进入领导功能
inputchar[i]=PARTICULAR;
TW_FlushDTMF(i);
strcpy(filename[i] , particular);
break;
default:
strcpy(filename[i] , welcomfile);
break;
}
TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块开始播放
}
/**************在播放选择投诉或留言提示过程中按键***********/
else if( inputchar[i] == APPEAL || inputchar[i] == LEAVEWORD)
{
switch (dtmf)
{
case '1':
case '2':
case '3':
case '4':
if(inputchar[i]==LEAVEWORD) dtmf='0';
filenamestr=GetFileName(dtmf,i);
strcpy(filename[i],filenamestr);
fail=TW_StartRecordFile( i , filename[i] , 0 , LONG_MAX);
if( fail==-1)
{
MessageBox("初始录音失败!","错误",MB_OK|MB_ICONSTOP);
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i,filename[i],0,LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX); //放音模块开始播放
CS[i]=WS_PLAY;
inputchar[i]=START;
}
else
CS[i]=WS_RECORD;
break;
default:
if(inputchar[i]==LEAVEWORD)
{
filenamestr=GetFileName('0',i);
strcpy(filename[i],filenamestr);
fail=TW_StartRecordFile(i,filename[i],0,LONG_MAX);
if (fail==-1) //录音失败
{
MessageBox("初始录音失败!","错误",MB_ICONQUESTION);
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i,filename[i],0,LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX); //放音模块开始播放
CS[i]=WS_PLAY;
inputchar[i]=START;
}
else
CS[i]=WS_RECORD;
}
else
{
strcpy(filename[i],welcomfile);
inputchar[i]=START;
TW_StartPlayFile( i , filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块开始播放
}
break;
}
}
else if(inputchar[i]==INQUIRE)//进入查询功能
{
switch (dtmf)
{
case '1':
strcpy(filename[i],INFORMATION1);
CS[i]=WS_PLAYINF;
break;
case '2':
strcpy(filename[i],INFORMATION2);
CS[i]=WS_PLAYINF;
break;
case '3':
strcpy(filename[i],INFORMATION3);
CS[i]=WS_PLAYINF;
break;
default:
strcpy(filename[i],chooseinf);
break;
}
TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块
while(TW_PlayFileRest(i)>0&&TW_PlayFileRest(3)>0);
}
else if(inputchar[i]==PARTICULAR) //进入特殊功能输入密码
{
passwordpointer=0;
password[passwordpointer++]=dtmf;
TW_StartTimer(i,30);
CS[i]=WS_WAITFORPASSWORD;
}
else if(inputchar[i]==CHOOSECOMMAND)//正在播放选择放音文件时有按键则停止放音
{
//将放音要求送入放音队列并等待
Key=dtmf;
if((Key=='*'||Key=='#')&&!(m_pSet->IsEOF()))
m_pSet->MoveLast();
else if(!m_pSet->IsBOF())
m_pSet->MoveFirst();
CS[i]=WS_WAITFORFILE;
}
else if(inputchar[i]==RECORDINF)//正在选择录制信息文件时有按键则进入相应录音状态
{
switch (dtmf)
{
case '1':
TW_StartRecordFile(i , INFORMATION1 , 0 , LONG_MAX);
sprintf(ChMess[i],"通道%2d (外线) : 正在录制信息文件1...",i);
ChPaint(i);
for(j=0;j<30000;j++) ;
CS[i]=WS_RECORD;
break;
case '2':
TW_StartRecordFile(i , INFORMATION2 , 0 , LONG_MAX);
sprintf(ChMess[i],"通道%2d (外线) : 正在录制信息文件2...",i);
ChPaint(i);
for(j=0;j<30000;j++);
CS[i]=WS_RECORD;
break;
case '3':
TW_StartRecordFile(i , INFORMATION3 , 0 , LONG_MAX);
sprintf(ChMess[i],"通道%2d (外线) : 正在录制信息文件3...",i);
ChPaint(i);
for(j=0;j<30000;j++);
CS[i]=WS_RECORD;
break;
default :
sprintf(ChMess[i],"通道%2d (外线) : 选择录制文件的类型错!",i);
ChPaint(i);
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i,filename[i],0,LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块
CS[i]=WS_PLAY;
inputchar[i]=START;
break;
}
}
}
//当提示语音文件或选择放音文件播放完时
else if (TW_PlayFileRest (i) <= 0 && TW_PlayFileRest (3) <= 0 )
{
sprintf (ChMess[i], "通道%2d (外线) : 提示音播放完成.", i);
ChPaint (i);
TW_StartPlayFile (i, filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
sprintf (ChMess[i], "通道%2d (外线) : 重新开始播放提示音...", i);
ChPaint (i);
}
else //否则直到文件播放完
{
TW_PlayFileRest(i);
TW_PlayFileRest(3);
}
break;
case WS_PLAYINF:
//正在播放信息文件时有按键则停止放音
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
CS[i]=WS_PLAY;
inputchar[i]=START;
break;
case WS_RECORD:
if (TW_MonitorBusy (i, SIG_BUSY1, 5) || TW_MonitorBusy (i, SIG_BUSY2, 5))
{
sprintf (ChMess[i], "通道%2d (外线) : 在录音期间用户挂机.", i);
ChPaint (i);
TW_StopRecordFile (i);
//若不为录制信息文件状态则将文件名放入队列
if(inputchar[i]!=RECORDINF)
{
//将文件名放入队列
}
TW_HangUpCtrl (i);
CS[i] = WS_HANGUP;
}
else if((dtmf=TW_GetDTMFChar (i)) != -1)
{
for(j=0;j<30000;j++) ;
TW_StopRecordFile(i);
//若不为录制信息文件状态则将文件名放入队列
if(inputchar[i]!=RECORDINF)
{
//将文件名放入队列
sprintf(ChMess[i],"通道%d (外线) : 正在保存记录信息...",i);
ChPaint(i);
m_pSet->MoveLast();
RecordNum=m_pSet->m_RecordNum+1;
if(!m_pSet->CanAppend())
MessageBox("记录不能被添加到数据库中!","数据库打开错误",MB_ICONERROR);
else
{
m_pSet->AddNew();
m_pSet->m_RecordNum=RecordNum;
m_pSet->m_FileName=filename[i];
m_pSet->m_type=filename[i][15];
m_pSet->m_memo="";
if(m_pSet->CanUpdate())
m_pSet->Update();
else
MessageBox("数据库不能被更新!","数据库错误",MB_ICONERROR);
m_pSet->Requery();
m_pSet->MoveLast();
}
if( filename[i][15]!='0')
{
sprintf(ChMess[i],"通道%2d (外线) : 计算机进行自动投诉. ",i);
ChPaint(i);
TW_HangUpCtrl(i);
CS[i]=WS_AUTODIAL;
DIAL[i]=WS_INITIALIZED;
strcpy(ad.FileName,filename[i]);
switch(filename[i][15])
{ case '1': //安装部门
if(bPhoneNum)
strcpy(ad.PhoneNumber,PhoneNum[0]);
else
strcpy(ad.PhoneNumber,"8637772");
break;
case '2': //抢修部门
if(bPhoneNum)
strcpy(ad.PhoneNumber ,PhoneNum[1]);
else
strcpy(ad.PhoneNumber,"8630031");
break;
case '3': //维护部门
if(bPhoneNum)
strcpy(ad.PhoneNumber ,PhoneNum[2]);
else
strcpy(ad.PhoneNumber,"999,669507");
break;
default: //咨询部门
sprintf(ChMess[i],"通道%2d (外线) : 选择投诉的类型错误,一律按内线处理!",i);
ChPaint(i);
TW_HangUpCtrl (i);
TW_GenerateRing(2);
CS[2]=WS_DEFAULT;
break;
}
TW_StartTimer(i,11);
}
else
{
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
inputchar[i]=START;
CS[i]=WS_PLAY;
}
}
else //播放欢迎信息文件
{
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ;
inputchar[i]=START;
CS[i]=WS_PLAY;
}
}
else
TW_RecordFileRest(i); //否则完成录制信息文件
break;
case WS_AUTODIAL: //自动拔号进行投诉
switch(DIAL[i])
{
case WS_INITIALIZED:
if(TW_TimerElapsed(i)<0)
{
TW_OffHookCtrl(i);
DIAL[i]=WS_STARTDIAL;
sprintf(ChMess[i],"通道%2d (外线) : 计算机开始拔号.",i);
ChPaint(i);
}
break;
case WS_STARTDIAL:
Sig=TW_CheckSignal(i,&SigCount,&SigLen);
if(Sig==SIG_DIAL)
{
TW_StartDial(i,(LPCSTR)ad.PhoneNumber);
DIAL[i]=WS_ONDIAL;
sprintf(ChMess[i],"通道%2d (外线) : 计算机正在拔号...",i);
ChPaint(i);
}
// else
// {
// TW_HangUpCtrl(i);
// DIAL[i]=WS_INITIALIZED;
//}
break;
case WS_ONDIAL:
if(TW_DialRest(i)==0)
{
TW_GenerateRing(i);
TW_StartTimer(i,90);
TW_StartMonitor(i);
DIAL[i]=WS_WAITOFFHOOK;
sprintf(ChMess[i],"通道%2d (外线) : 计算机完成拔号,等待摘机. ",i);
ChPaint(i);
}
else
TW_DialRest(i);
break;
case WS_WAITOFFHOOK:
if(TW_MonitorOffHook(i,25))
{
TW_PowerCtrl(i);
sprintf(ChMess[i],"通道%2d (外线) : 相应抢修部门已摘机. ",i);
ChPaint(i);
DIAL[i]=WS_STARTPLAY;
TW_StartTimer(i,40);
}
else if(TW_TimerElapsed(i)<0)
{
TW_HangUpCtrl(i);
strcpy(ad.PhoneNumber,"8227302");
DIAL[i]=WS_INITIALIZED;
TW_StartTimer(i,11);
sprintf(ChMess[i],"通道%2d (外线) : 等待时间超时,计算机重拔上级号码... ",i);
ChPaint(i);
}
break;
case WS_STARTPLAY:
if(TW_StartPlayFile(i,ad.FileName,0,LONG_MAX)==0)
{
sprintf(ChMess[i],"通道%2d (外线) : 找到的投诉记录是空文件或不存在!",i);
ChPaint(i);
strcpy(filename[i],welcomfile);
TW_StartPlayFile(i,filename[i],0,LONG_MAX);
TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块放音
inputchar[i]=START;
CS[i]=WS_PLAY;
}
else
{
TW_StartPlayFile (3, ad.FileName, 0 , LONG_MAX) ; //放音模块放音
sprintf(ChMess[i],"通道%2d (外线) : 计算机正在播放记录信息... ",i);
ChPaint(i);
DIAL[i]=WS_ONPLAY;
}
break;
case WS_ONPLAY:
if(TW_MonitorBusy(i,SIG_BUSY1,5)|| TW_MonitorBusy(i,SIG_BUSY2,5))
{
TW_StopPlayFile(i);
TW_StopPlayFile(3);
TW_HangUpCtrl(i);
CS[i]=WS_HANGUP;
sprintf(ChMess[i],"通道%2d (外线) : 相应抢修部门已挂机. " ,i);
ChPaint(i);
}
else if(TW_TimerElapsed(i)<0)
{
TW_StopPlayFile(i);
TW_StopPlayFile(3);
TW_HangUpCtrl(i);
CS[i]=WS_HANGUP;
sprintf(ChMess[i],"通道%2d (外线) : 等待时间到,计算机结束播放!",i);
ChPaint(i);
}
else if(TW_PlayFileRest(i)<=0)
{
if(TW_PlayFileRest(3)<=0)
{
DIAL[i]=WS_STARTPLAY;
sprintf(ChMess[i],"通道%2d (外线) : 计算机已完成放音,再次重放...",i);
ChPaint(i);
}
else
TW_PlayFileRest(3);
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -