📄 faxdemo.cpp
字号:
{
case 0:
if(RingDetect(i))
{
OutStatus(i,"Ring ...");
OffHook(i);
StartSigCheck(i);
InitDtmfBuf(i);
pTrunk[i].Status = 10;
}
/* if( i == 9 )
{
OffHook(i);
SendDtmfBuf(i,"70");
pTrunk[i].Status = 90;
}
*/ break;
case 10:
OutStatus(i,"Play Message ...... ");
strcpy(filename,VoicePath);
strcat(filename,"faxdemo.001");
StartPlayFile(i,filename,0);
pTrunk[i].Status = 20;
break;
case 20:
if(CheckPlayEnd(i)==1)
{
StopPlayFile(i);
pTrunk[i].Status = 30;
}
else
{
if((pTrunk[i].Code = GetDtmfCode(i))!=-1)
{
StopPlayFile(i);
pTrunk[i].Status = 40;
}
}
break;
case 30:
if((pTrunk[i].Code = GetDtmfCode(i))!=-1)
pTrunk[i].Status = 40;
break;
case 40:
if(CheckPlayEnd(i)==1)
{
switch(pTrunk[i].Code)
{
case 1:
pTrunk[i].Status = 100;
break;
case 2:
pTrunk[i].Status = 200;
break;
case 3:
pTrunk[i].Status = 300;
break;
case 5:
pTrunk[i].Status = 700;
break;
case 6:
pTrunk[i].Status = 800;
break;
default:
OutStatus(i,"Input error, please reinput");
pTrunk[i].Status = 30;
break;
}
}
break;
case 90://send fax
if(CheckSendEnd(i) == 1)
{
// StartSigCheck(i);
pTrunk[i].Status = 100;
}
break;
case 100://send fax
strcpy(filename,VoicePath);
strcat(filename,"faxdemo.002");
StartPlayFile(i,filename,0);
pTrunk[i].Status=110;
break;
case 110:
if(CheckPlayEnd(i)!=1) break;
StopPlayFile(i);
FaxChnl = DJFax_GetOneFreeFaxChnl();
if(!DJFax_SetLink(FaxChnl,i))
{
HangUp(i);
OutLinkFax(i,"Error");
pTrunk[i].Status = 0;
break;
}
DJFax_SetLocalID (FaxChnl, "1234567890ABCDEF1234");
DJFax_SetResolution(FaxChnl,HIGH_RESOLUTION);
sprintf(PStr,"%d",FaxChnl);
OutLinkFax(i,PStr);
OutFax(FaxChnl,"Start Send Fax ...");
OutStatus(i,"Start Send Fax ...");
pFax[FaxChnl].Status = SEND;
strcpy ( pFax[FaxChnl].SendFaxName, "w.bfx" );
pTrunk[i].Status = 120;
break;
case 120:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
if((pFax[FaxChnl].TotalPage=DJFax_SendFaxFile(FaxChnl,pFax[FaxChnl].SendFaxName)) > 0)
{
sprintf(PStr,"Now Send Fax Page %d/%d %ld bytes",
pFax[FaxChnl].CurrPage+1,pFax[FaxChnl].TotalPage,
DJFax_GetSendBytes(FaxChnl));
OutFax(FaxChnl,PStr);
pTrunk[i].Status = 500;
}
else
{
OutFax(FaxChnl,"Send fax Error... ");
DJFax_ClearLink(FaxChnl,i);
HangUp(i);
pTrunk[i].Status = 0;
}
break;
case 200://Receive fax
FaxChnl = DJFax_GetOneFreeFaxChnl();
if(!DJFax_SetLink(FaxChnl,i))
{
HangUp(i);
OutLinkFax(i,"Error");
pTrunk[i].Status = 0;
break;
}
DJFax_SetLocalID (FaxChnl, "1234567890ABCDEF1234");
sprintf(PStr,"%d ",FaxChnl);
OutLinkFax(i,PStr);
OutFax(FaxChnl,"Start Receive Fax ...");
OutStatus(i,"Start Receive Fax ...");
pFax[FaxChnl].Status = RECEIVE;
pTrunk[i].Status = 220;
break;
case 220:
sprintf(FileName,"aaa%03d.bfx",F);
F++;
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
if(DJFax_RcvFaxFile(FaxChnl,FileName) == 1)
{
sprintf(PStr,"Now Recive Fax Page %d",pFax[FaxChnl].CurrPage+1);
OutFax(FaxChnl,PStr);
pTrunk[i].Status = 500;
}
else
{
OutFax(FaxChnl,"Recive fax error...");
DJFax_ClearLink(FaxChnl,i);
HangUp(i);
pTrunk[i].Status = 0;
}
break;
case 300://send fax
strcpy(filename,VoicePath);
strcat(filename,"faxdemo.003");
StartPlayFile(i,filename,0);
pTrunk[i].Status=310;
break;
case 310:
if(CheckPlayEnd(i)==1) StopPlayFile(i);
ConvID=FindFreeConvertChannel();
if(ConvID<0) break;
sprintf(filename,"c%02d.bfx",i);
StartConvert(i,ConvID,filename);
OutStatus(i,"Start Convert Txt to Fax...");
sprintf(PStr,"%d",ConvID);
OutLinkFax(i,PStr);
pTrunk[i].Status=320;
break;
case 320:
if(CheckPlayEnd(i)==1) StopPlayFile(i);
ConvID=GetConvIDOfVoiceChannel(i);
if(CheckConvertEnd(ConvID))
{
StopConvert(ConvID);
pTrunk[i].Status=350;
}
break;
case 350:
StopPlayFile(i);
strcpy(filename,VoicePath);
strcat(filename,"faxdemo.002");
StartPlayFile(i,filename,0);
pTrunk[i].Status=380;
break;
case 380:
if(CheckPlayEnd(i)!=1) break;
StopPlayFile(i);
FaxChnl = DJFax_GetOneFreeFaxChnl();
if(!DJFax_SetLink(FaxChnl,i))
{
HangUp(i);
OutLinkFax(i,"Error");
pTrunk[i].Status = 0;
break;
}
pTrunk[i].FaxCh=FaxChnl;
OutStatus(i,"Start Send ...");
sprintf(PStr,"%d",FaxChnl);
OutLinkFax(i,PStr);
DJFax_SetLocalID (FaxChnl, "1234567890ABCDEF1234");
pTrunk[i].Status=390;
break;
case 390:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
sprintf(pFax[FaxChnl].SendFaxName,"c%02d.bfx",i);
if((pFax[FaxChnl].TotalPage=DJFax_SendFaxFile(FaxChnl,pFax[FaxChnl].SendFaxName)) > 0)
{
sprintf(PStr,"Now Send Fax Page %d/%d %ld bytes",
pFax[FaxChnl].CurrPage+1,pFax[FaxChnl].TotalPage,
DJFax_GetSendBytes(FaxChnl));
OutFax(FaxChnl,PStr);
pTrunk[i].Status = 500;
pFax[FaxChnl].Status=SEND;
}
else
{
OutFax(FaxChnl,"Send fax Error... ");
DJFax_ClearLink(FaxChnl,i);
HangUp(i);
pTrunk[i].Status = 0;
}
break;
case 500://
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
if((pFax[FaxChnl].Status == SEND) &&
((pFax[FaxChnl].CurrPage+1) <= pFax[FaxChnl].TotalPage))
{
sprintf(PStr,"Now Send Fax Page %d/%d %ld bytes",
pFax[FaxChnl].CurrPage+1,pFax[FaxChnl].TotalPage,
DJFax_GetSendBytes(FaxChnl));
}
else if(pFax[FaxChnl].Status == RECEIVE)
{
sprintf(PStr,"Now Recive Fax Page %d %ld bytes",
pFax[FaxChnl].CurrPage+1,DJFax_GetRcvBytes(FaxChnl));
}
OutFax(FaxChnl,PStr);
CheckReturn = DJFax_CheckTransmit(FaxChnl);
if(CheckReturn == 1)
pTrunk[i].Status = 600;
else if(CheckReturn == 2)
{
pFax[FaxChnl].CurrPage++;
}
else if(CheckReturn == -1)
pTrunk[i].Status = 610;
else if(CheckReturn == -2)
pTrunk[i].Status = 610;
break;
case 600:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
DJFax_StopFax(FaxChnl);
DJFax_ClearLink(FaxChnl,i);
HangUp(i);
pTrunk[i].Status = 0;
OutStatus(i,"FREE");
OutLinkFax(i,"");
OutFax(FaxChnl,"Free .... ");
pFax[FaxChnl].CurrPage = 0;
pFax[FaxChnl].Status = 0;
break;
case 610:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
DJFax_StopFax(FaxChnl);
OutStatus(i,"FREE");
sprintf(PStr,"Have error. Err No. %d ... ",DJFax_GetErrCode(FaxChnl));
OutFax(FaxChnl,PStr);
DJFax_ClearLink(FaxChnl,i);
HangUp(i);
OutFax(FaxChnl,"Free ...");
pTrunk[i].Status = 0;
pFax[FaxChnl].CurrPage = 0;
pFax[FaxChnl].Status = 0;
break;
case 650: // check busy sig when handle fax
HangUp(i);
OutStatus(i,"FREE");
OutLinkFax(i,"");
pTrunk[i].Status = 0;
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
if ( FaxChnl != -1 )
{
DJFax_StopFax(FaxChnl);
OutFax(FaxChnl,"Free ... ");
sprintf(PStr,"Have error. Err No. %d ...",DJFax_GetErrCode(FaxChnl));
OutFax(FaxChnl,PStr);
DJFax_ClearLink(FaxChnl,i);
pFax[FaxChnl].CurrPage = 0;
pFax[FaxChnl].Status = 0;
}
break;
case 700://Response Modem
FaxChnl = DJFax_GetOneFreeFaxChnl();
if(!DJFax_SetLink(FaxChnl,i)){
HangUp(i);
OutLinkFax(i,"Error Error");
pTrunk[i].Status = 0;
break;
}
DJFax_SetModemMode(FaxChnl,MODE_ANSWER,NULL);
OutStatus(i,"Link ... ");
sprintf(PStr,"%d ",FaxChnl);
OutLinkFax(i,PStr);
OutFax(FaxChnl,"Modem answer mode...");
pTrunk[i].Status =760;
break;
case 800://Call Modem
FaxChnl = DJFax_GetOneFreeFaxChnl();
if(!DJFax_SetLink(FaxChnl,i)){
HangUp(i);
OutLinkFax(i,"Error");
pTrunk[i].Status = 0;
break;
}
DJFax_SetModemMode(FaxChnl,MODE_CALL,NULL);
OutStatus(i,"Link ...");
sprintf(PStr,"%d",FaxChnl);
OutLinkFax(i,PStr);
OutFax(FaxChnl,"Modem dialout mode...");
pTrunk[i].Status =760;
break;
case 760:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
Return=DJFax_CheckConnect(FaxChnl);
switch(Return){
case RESULT_MODEM_WORKING:
break;
case RESULT_MODEM_ERROR:
case RESULT_LINE_ERROR:
case RESULT_MODEM_NOCARRIER:
pTrunk[i].Status =910;
break;
case RESULT_MODEM_CONNECT:
pTrunk[i].Status =770;
break;
}
break;
case 770:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
Return=DJFax_GetModemError(FaxChnl);
if (Return==RESULT_MODEM_ERROR || Return==RESULT_LINE_ERROR)
{
pTrunk[i].Status =900;
break;
}
ReadCount=DJFax_ReadModemBuf(FaxChnl,ReadBuff);
if (ReadCount!=0)
{
DJFax_WriteModemBuf(FaxChnl,ReadBuff,ReadCount);
// add for new modem buffer
for ( int k=0; k < ReadCount; k ++ )
{
ModemBuf[FaxChnl][NowBufPos[FaxChnl]++] = ReadBuff[k];
if ( (ReadBuff[k] == '\r') || (ReadBuff[k] == '\n') )
{
ReadBuff[0] = '\n';
ReadBuff[1] = '\r';
DJFax_WriteModemBuf(FaxChnl,ReadBuff,2);
ModemBuf[FaxChnl][NowBufPos[FaxChnl]++] = '\n';
ModemBuf[FaxChnl][NowBufPos[FaxChnl]++] = '\r';
DJFax_WriteModemBuf(FaxChnl,ModemBuf[FaxChnl],NowBufPos[FaxChnl]-1);
NowBufPos[FaxChnl] = 0;
}
}
}
OutFax(FaxChnl,"Modem receive and send data...");
break;
case 900:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
OutFax(FaxChnl,"Free ....");
OutStatus(i,"FREE");
OutLinkFax(i,"");
pFax[FaxChnl].CurrPage = 0;
pFax[FaxChnl].Status = 0;
pTrunk[i].Status = 950;
break;
case 910:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
OutFax(FaxChnl,"Data have error.... ");
OutStatus(i,"FREE");
OutLinkFax(i,"");
pFax[FaxChnl].CurrPage = 0;
pFax[FaxChnl].Status = 0;
pTrunk[i].Status = 950;
break;
case 950:
FaxChnl = DJFax_GetFaxChnlOfVoiceChnl(i);
DJFax_StopFax(FaxChnl);
DJFax_ClearLink(FaxChnl,i);
HangUp(i);
pTrunk[i].Status = 0;
break;
}
}
ReleaseDC(hwnd,hDC);
}
char Convert(int ch)
{
char c;
switch(ch) {
case 10:
c = '0';
break;
case 11:
c = '*';
break;
case 12:
c = '#';
break;
default:
c = ch + '0';
}
return c;
}
void WINAPI GetVoicePath()
{
char path[100];
GetWindowsDirectory(path,100);
strcat(path,"\\tc08a-v.ini");
GetPrivateProfileString("SYSTEM","InstallDir","",VoicePath,100,path);
strcat(VoicePath,"voc\\");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -