public static eCardState InitCh() { _ChNumTotal = DJDBDK.Tc08a32.CheckValidCh(); for (int i = 0; i < _ChNumTotal; i++) { eChannelType chType = (eChannelType)Enum.Parse(typeof(eChannelType), DJDBDK.Tc08a32.CheckChType(i).ToString()); LineInfo NewLine = new LineInfo(); NewLine.Type = chType; NewLine.iChID = i; Llineinfo.Add(NewLine); } _CardStatus = (eCardState)Enum.Parse(typeof(eCardState), DJDBDK.Tc08a32.EnableCard(ChNumTotal, 1024 * ChNumTotal).ToString()); if (CardStatus!=eCardState.Success) FreeDrv(); _ChNumAvailable = Llineinfo.Where(n => n.Type != eChannelType.Empty).ToList().Count; return CardStatus; }
private static void Ch_FreeHandle(LineInfo mLineInfo) { if (DJDBDK.Tc08a32.RingDetect(mLineInfo.iChID))//检测到响铃 { if (mLineInfo.Type == eChannelType.User) mLineInfo.State = eChannelState.CH_OFFHOOK; else { mLineInfo.State = eChannelState.CH_RECEIVEID; DJDBDK.Tc08a32.ResetCallerIDBuffer(mLineInfo.iChID); mLineInfo.nTimeElapse = 0; } } }
private static void CheckLineState(LineInfo mLineInfo) { switch (mLineInfo.State) { case eChannelState.CH_FREE: Ch_FreeHandle(mLineInfo); break; case eChannelState.CH_RECEIVEID: CH_ReceiveidHandle(mLineInfo); break; case eChannelState.CH_WAITSECONDRING: if (DJDBDK.Tc08a32.RingDetect(mLineInfo.iChID)) { DJDBDK.Tc08a32.OffHook(mLineInfo.iChID); DJDBDK.Tc08a32.StartSigCheck(mLineInfo.iChID); mLineInfo.State = eChannelState.CH_OFFHOOK; } break; case eChannelState.CH_WELCOME: short code = DJDBDK.Tc08a32.GetDtmfCode(mLineInfo.iChID); if(code!=-1) { DJDBDK.Tc08a32.StopPlayFile(mLineInfo.iChID); mLineInfo.Dtmf[0] = ConvertDtmf(code); mLineInfo.Dtmf[1] = '0'; mLineInfo.State = eChannelState.CH_ACCOUNT1; break; } if(DJDBDK.Tc08a32.CheckPlayEnd(mLineInfo.iChID)) { //DJDBDK.Tc08a32.StopPlayFile(mLineInfo.iChID); //strcpy(FileName,VoicePath); //strcat(FileName,"bank.002"); //StartPlayFile(i,FileName,0L); //Lines[i].State=CH_ACCOUNT; } break; case eChannelState.CH_ACCOUNT: //code=GetDtmfCode(i); //if(code!=-1) //{ // StopPlayFile(i); // Lines[i].Dtmf[0]=yzConvertDtmf(code); // Lines[i].Dtmf[1]=0; // Lines[i].State=CH_ACCOUNT1; // break; //} //if(CheckPlayEnd(i)) //{ // StopPlayFile(i); // Lines[i].State=CH_ACCOUNT1; //} break; case eChannelState.CH_ACCOUNT1: // len = strlen(Lines[i].Dtmf); // while ((code = GetDtmfCode(i)) != -1) // { // Lines[i].Dtmf[len++] = yzConvertDtmf(code); // } // Lines[i].Dtmf[len] = 0; // if (len >= 8) // { // // code=GetDtmfCode(i); // Lines[i].Dtmf[0] = 0; // strcpy(FileName, VoicePath); // strcat(FileName, "bank.003"); // StartPlayFile(i, FileName, 0L); // Lines[i].State = CH_PASSWORD; // } // break; //case CH_PASSWORD: // code = GetDtmfCode(i); // if (code != -1) // { // StopPlayFile(i); // Lines[i].Dtmf[0] = yzConvertDtmf(code); // Lines[i].Dtmf[1] = 0; // Lines[i].State = CH_PASSWORD1; // break; // } // if (CheckPlayEnd(i)) // { // StopPlayFile(i); // Lines[i].State = CH_PASSWORD1; // } break; case eChannelState.CH_PASSWORD: break; case eChannelState.CH_PASSWORD1: break; case eChannelState.CH_SELECT: break; case eChannelState.CH_SELECT1: break; case eChannelState.CH_PLAYRESULT: if (DJDBDK.Tc08a32.CheckIndexPlayFile(mLineInfo.iChID)) { DJDBDK.Tc08a32.StopIndexPlayFile(mLineInfo.iChID); if (mLineInfo.Type == eChannelType.Trunk) ResetChannel(mLineInfo.iChID); else { DJDBDK.Tc08a32.StartPlaySignal(mLineInfo.iChID, (ushort)eSigType.BUSY1); mLineInfo.State = eChannelState.CH_WAITUSERONHOOK; } } break; case eChannelState.CH_RECORDFILE: break; case eChannelState.CH_PLAYRECORD: break; case eChannelState.CH_OFFHOOK: break; case eChannelState.CH_WAITUSERONHOOK: if (!DJDBDK.Tc08a32.RingDetect(mLineInfo.iChID)) { DJDBDK.Tc08a32.StartPlaySignal(mLineInfo.iChID, (int)eSigType.STOP); ResetChannel(mLineInfo.iChID); } break; default: break; } }
private static void CH_ReceiveidHandle(LineInfo mLineInfo) { bool bOffHook = false; if (mLineInfo.nTimeElapse > 2000 && DJDBDK.Tc08a32.RingDetect(mLineInfo.iChID)) bOffHook = true; if (mLineInfo.nTimeElapse > 7000) bOffHook = true; StringBuilder CallerID = new StringBuilder(); CallerID.Append(mLineInfo.CallerID); int a = DJDBDK.Tc08a32.GetCallerIDStr(mLineInfo.iChID, CallerID); mLineInfo.CallerID = CallerID.ToString().ToCharArray(); if (a == 3) { bOffHook = true; } else if (a == 4)//效验错误 { mLineInfo.CallerID = new char[32];//清除接收的数据 //LoadString(hInst, eIDS.CallerID_ERROR, mLineInfo.CallerID, 32); bOffHook = true; } if (bOffHook) { DJDBDK.Tc08a32.OffHook(mLineInfo.iChID); DJDBDK.Tc08a32.StartSigCheck(mLineInfo.iChID); mLineInfo.State = eChannelState.CH_OFFHOOK; } mLineInfo.nTimeElapse += 50; }
private static void CheckLineState(LineInfo mLineInfo) { switch (mLineInfo.State) { case eChannelState.CH_FREE: Ch_FreeHandle(mLineInfo); break; case eChannelState.CH_RECEIVEID: CH_ReceiveidHandle(mLineInfo); break; case eChannelState.CH_WAITSECONDRING: if (DJDBDK.Tc08a32.RingDetect(mLineInfo.iChID)) { DJDBDK.Tc08a32.OffHook(mLineInfo.iChID); DJDBDK.Tc08a32.StartSigCheck(mLineInfo.iChID); mLineInfo.State = eChannelState.CH_OFFHOOK; } break; case eChannelState.CH_WELCOME: short code = DJDBDK.Tc08a32.GetDtmfCode(mLineInfo.iChID); if (code != -1) { DJDBDK.Tc08a32.StopPlayFile(mLineInfo.iChID); mLineInfo.Dtmf[0] = ConvertDtmf(code); mLineInfo.Dtmf[1] = '0'; mLineInfo.State = eChannelState.CH_ACCOUNT1; break; } if (DJDBDK.Tc08a32.CheckPlayEnd(mLineInfo.iChID)) { //DJDBDK.Tc08a32.StopPlayFile(mLineInfo.iChID); //strcpy(FileName,VoicePath); //strcat(FileName,"bank.002"); //StartPlayFile(i,FileName,0L); //Lines[i].State=CH_ACCOUNT; } break; case eChannelState.CH_ACCOUNT: //code=GetDtmfCode(i); //if(code!=-1) //{ // StopPlayFile(i); // Lines[i].Dtmf[0]=yzConvertDtmf(code); // Lines[i].Dtmf[1]=0; // Lines[i].State=CH_ACCOUNT1; // break; //} //if(CheckPlayEnd(i)) //{ // StopPlayFile(i); // Lines[i].State=CH_ACCOUNT1; //} break; case eChannelState.CH_ACCOUNT1: // len = strlen(Lines[i].Dtmf); // while ((code = GetDtmfCode(i)) != -1) // { // Lines[i].Dtmf[len++] = yzConvertDtmf(code); // } // Lines[i].Dtmf[len] = 0; // if (len >= 8) // { // // code=GetDtmfCode(i); // Lines[i].Dtmf[0] = 0; // strcpy(FileName, VoicePath); // strcat(FileName, "bank.003"); // StartPlayFile(i, FileName, 0L); // Lines[i].State = CH_PASSWORD; // } // break; //case CH_PASSWORD: // code = GetDtmfCode(i); // if (code != -1) // { // StopPlayFile(i); // Lines[i].Dtmf[0] = yzConvertDtmf(code); // Lines[i].Dtmf[1] = 0; // Lines[i].State = CH_PASSWORD1; // break; // } // if (CheckPlayEnd(i)) // { // StopPlayFile(i); // Lines[i].State = CH_PASSWORD1; // } break; case eChannelState.CH_PASSWORD: break; case eChannelState.CH_PASSWORD1: break; case eChannelState.CH_SELECT: break; case eChannelState.CH_SELECT1: break; case eChannelState.CH_PLAYRESULT: if (DJDBDK.Tc08a32.CheckIndexPlayFile(mLineInfo.iChID)) { DJDBDK.Tc08a32.StopIndexPlayFile(mLineInfo.iChID); if (mLineInfo.Type == eChannelType.Trunk) { ResetChannel(mLineInfo.iChID); } else { DJDBDK.Tc08a32.StartPlaySignal(mLineInfo.iChID, (ushort)eSigType.BUSY1); mLineInfo.State = eChannelState.CH_WAITUSERONHOOK; } } break; case eChannelState.CH_RECORDFILE: break; case eChannelState.CH_PLAYRECORD: break; case eChannelState.CH_OFFHOOK: break; case eChannelState.CH_WAITUSERONHOOK: if (!DJDBDK.Tc08a32.RingDetect(mLineInfo.iChID)) { DJDBDK.Tc08a32.StartPlaySignal(mLineInfo.iChID, (int)eSigType.STOP); ResetChannel(mLineInfo.iChID); } break; default: break; } }