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

📄 tce1.cpp

📁 电话拨号演示系统(需硬件板卡支持)
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	DJVoc_LoopPlayPromptFile( VocChannel[VOCTONECH], "TONE" ) ;


	static int ColumnWidth[60] = {50, 60, 60, 80, 80, 50, 50, 150};
	LV_COLUMN lvc;
	char *dig =new char[10];
	lvc.mask =  LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
	lvc.iSubItem = 0;
	lvc.pszText = "通道号" ;
	lvc.cx = ColumnWidth[0];
	ListView_InsertColumn(GetDlgItem(hGWnd,IDC_TRUNKLIST),0,&lvc);
	ListView_InsertColumn(GetDlgItem(hPropPage[0],IDC_USERLIST),0,&lvc);

	lvc.iSubItem = 1;
	lvc.pszText = "DL信令" ;
	lvc.cx = ColumnWidth[1];
	ListView_InsertColumn(GetDlgItem(hGWnd,IDC_TRUNKLIST),1,&lvc);

	lvc.pszText = "状态" ;
	ListView_InsertColumn(GetDlgItem(hPropPage[0],IDC_USERLIST),1,&lvc);
	

	lvc.iSubItem = 2;
	lvc.pszText = "线路状态" ;
	lvc.cx = ColumnWidth[2];
	ListView_InsertColumn(GetDlgItem(hGWnd,IDC_TRUNKLIST),2,&lvc);
	lvc.pszText = "DTMF 拨号" ;
	ListView_InsertColumn(GetDlgItem(hPropPage[0],IDC_USERLIST),2,&lvc);
	
	lvc.iSubItem = 3;
	lvc.pszText = "号码" ;
	lvc.cx = ColumnWidth[3];
	ListView_InsertColumn(GetDlgItem(hGWnd,IDC_TRUNKLIST),3,&lvc);
	
	lvc.iSubItem = 4;
	lvc.pszText = "DTMF" ;
	lvc.cx = ColumnWidth[4];
	ListView_InsertColumn(GetDlgItem(hGWnd,IDC_TRUNKLIST),4,&lvc);

	LV_ITEM lvi;
	for(i = 0; i < TotalTrunk; i++)	
	{
		lvi.mask = LVIF_TEXT;
		lvi.iItem = i;
		lvi.iSubItem = 0;
		dig = itoa( i, dig, 10 ) ; 
		lvi.pszText = dig;
		ListView_InsertItem(GetDlgItem(hGWnd,IDC_TRUNKLIST),&lvi);
	}
	for(i = 0; i < TotalUser; i++)	
	{
		lvi.mask = LVIF_TEXT;
		lvi.iItem = i;
		lvi.iSubItem = 0;
		dig = itoa( i, dig, 10 ) ; 
		lvi.pszText = dig;
		ListView_InsertItem(GetDlgItem(hPropPage[0],IDC_USERLIST),&lvi);
	}
	delete [] dig ;
	DialData.DialLen=5;
	strcpy(DialData.CallerNum,"99999");
	return true;
}

////////////////////////////////////////////////////////////

void yzExitSystem() 
{
	DJSys_DisableCard() ;
	delete [] Trunk ;
	delete [] User ;
}

////////////////////////////////////////////////////////////

void yzDrawTrkState( int trkno )
{	
	char state[120];
	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_TRUNKLIST), trkno, 1, tmpstr, 19 ) ;
	if ( strcmp(state,tmpstr )!=0) 
		ListView_SetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), 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_DialFail:     strcpy(state,"SFAL"); break ;
		case Step_Block:        strcpy(state,"BLK!"); break ;
		case Step_OverTime:     strcpy(state,"OVER"); break ;
		case Step_RecvFail:		strcpy(state,"RFAL");break;
		default:				strcpy(state,"    "); break ;
	}
	ListView_GetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 2, tmpstr, 19 ) ;
	if ( strcmp(state,tmpstr )!=0) 
		ListView_SetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 2, state );
	
	if( strcmp(state,"FREE" )==0)
	{
		ListView_SetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 3, "" );
	}
	else 
	{
		char * s = tmpstr ;
		s = DJTrk_GetMfcCode(trkno) ;
		strcpy(state,s) ;
		
		ListView_GetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 3, tmpstr, 19 ) ;
		if ( strcmp(state,tmpstr )!=0) 
			ListView_SetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 3, state );

		s=DJTrk_GetDtmfCode(trkno);
		strcpy(state,s);
		ListView_GetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 4, tmpstr, 19 ) ;
		if ( strcmp(state,tmpstr )!=0) 
			ListView_SetItemText(GetDlgItem(hGWnd,IDC_TRUNKLIST), trkno, 4, state );
	}
}   

////////////////////////////////////////////////////////////

void yzDrawUserState( int userno )
{
	char state[50] ;
	char tmpstr[20] ;

	switch( User[userno].State ) 
	{
	case USR_ONHOOK:		strcpy(state, "空闲"); break ;
	case USR_OFFHOOK:		strcpy(state ,"摘机"); break ;
	case USR_WAITDIAL:		strcpy(state , "正在拨号"); break ;
	case USR_DIAL:			strcpy(state , "呼出"); break ;
	case USR_RING:			strcpy(state , "等待摘机"); break ;
	case USR_CONNECT:		strcpy(state , "连接"); break ;
	case USR_WAITONHOOK:	strcpy(state , "等待挂机"); break ;
	case USR_EXRING:		strcpy(state , "振铃"); break ;
	case USR_EXCONNECT:		strcpy(state , "连接"); break ;
	}
	ListView_GetItemText(GetDlgItem(hPropPage[0],IDC_USERLIST), userno, 1, tmpstr, 19 ) ;
	if ( strcmp(state,tmpstr )!=0) 
		ListView_SetItemText(GetDlgItem(hPropPage[0],IDC_USERLIST), userno, 1, state );

	char * s = tmpstr ;
	s = DJUser_GetDialCode(userno) ;
	strcpy(state,s) ;
	ListView_GetItemText(GetDlgItem(hPropPage[0],IDC_USERLIST), userno, 2, tmpstr, 19 ) ;
	if ( strcmp(state,tmpstr )!=0) 
		ListView_SetItemText(GetDlgItem(hPropPage[0],IDC_USERLIST), userno, 2, state );
}

////////////////////////////////////////////////////////////
void ResetTrunk(int trunkID)
{
	if( trunkID == -1  || Trunk[trunkID].State == TRK_FREE ) return ;

	int userID = DJTrk_GetConnectUserID( trunkID );
	if( userID >= 0 )
		DJExg_ClearLinkTrunkAndUserByTrunk( trunkID );
	int voiceID = DJTrk_GetTrunkRecordID( trunkID );
	if( voiceID >= 0 ){
		DJVoc_StopRecordFile( trunkID );
	}
	else{
		voiceID = DJTrk_GetTrunkPlayID( trunkID );
		if( voiceID >= 0 ){
			int resType = DJVoc_GetVoiceResourceType( voiceID );
			if( resType == Res_File ){
				DJVoc_StopPlayFile( trunkID );
			}
			else if( DJVoc_GetVoiceOperateType( voiceID ) == OP_Play ){
				DJVoc_VoiceStop( voiceID );
				DJExg_ClearLinkPlayVoiceFromTrunk( trunkID );
			}
		}
	}
	DJTrk_BackwardHangUp( trunkID );
	DJTrk_InitDtmfBuf(trunkID);
	Trunk[trunkID].State = TRK_FREE;
	Trunk[trunkID].ConnectUser=-1;
		
}

////////////////////////////////////////////////////////////

void ResetUser(int userID)
{
	if( userID != -1 ) {
		if( DJUser_RingDetect(userID) ) {
			DJUser_StopRing(userID) ;
		}			
		DJExg_ClearLinkPlayVoiceFromUser( userID ) ;
		DJUser_InitDialBuf(userID) ;	
		User[userID].ConnectTrk = -1 ;
		User[userID].State = USR_ONHOOK ; 	
	}
}



////////////////////////////////////////////////////////////

char * GetIniString( char * name )
{
	static CHAR inBuf[80]; 
	char windir[50] ;
	GetWindowsDirectory( windir, 45) ;
	strcat( windir, "\\dial.ini" );
	GetPrivateProfileString ("config", name, 
		                     "0", inBuf, 80, 
			                 windir); 
	return inBuf ;
}

////////////////////////////////////////////////////////////

void SetIniString( char * name, char * value )
{
	char windir[50] ;
	GetWindowsDirectory( windir, 45) ;
	strcat( windir, "\\dial.ini" );
	
	BOOL b = WritePrivateProfileString ("config", name, 
                             value, windir); 

}

////////////////////////////////////////////////////////////
void yzResetProcedure()
{
	for(int i=0;i<TotalTrunk;i++)
	{
		ResetTrunk(i);
	}
	for(i=0;i<TotalUser ;i++)
	{
		ResetUser(i);
	}
}
void yzCallOut(char* code)
{
	int	tmpval = GetDialTrunkId() ;			//get a free trunk for callout
	if( tmpval == -1 ) 
	{//cannot find free trunk channel
		MessageBox(NULL,"找不到空闲的呼出通道","Note",MB_OK);
		return;
	}
	else 
	{
		DJTrk_StartDial( tmpval, code, DialData.CallerNum ) ;
		Trunk[tmpval].State = TRK_CALLOUT ;
		if(nDialType==2) Trunk[tmpval+TotalTrunk/2].State=TRK_CALLIN;
	}

}
void yzSetChannelType()
{
	if((nDialType==0)||(nDialType==1))
	{
		for(int i=0;i<TotalTrunk;i++)
			DJTrk_SetTrunkType(i,Type_Export);
	}
	else if(nDialType==2)
	{
		for(int i=0;i<TotalTrunk/2;i++)
			DJTrk_SetTrunkType(i,Type_Export);
		for(i=TotalTrunk/2;i<TotalTrunk;i++)
			DJTrk_SetTrunkType(i,Type_Import);
	}
}
BOOL yzPlayPromptFile( int trunkID , char * filename)
{
	int vocno ;
//	if((vocno = DJVoc_SFVC_ForPlay(trunkID)) == -1) {
	if((vocno = DJVoc_SFVC_ForPlay_New(trunkID, true)) == -1) {
		return false ;
	}
				
	if( ! DJVoc_PlayPromptFile( vocno, filename ) ) {
		return false ;
	}
				
	if( ! DJExg_SetLinkPlayVoiceToTrunk( trunkID, vocno ) ) {
		return false ;
	}
	return true ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -