コード例 #1
0
		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;
		}
コード例 #2
0
 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;
         }
     }
 }
コード例 #3
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;
            }
        }
コード例 #4
0
        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;
        }
コード例 #5
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;
            }
        }