亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jbwait.c

?? 電話PSTN線路上FSK處理軟件。。。。。。。。。
?? C
?? 第 1 頁 / 共 4 頁
字號:
 
/*************************************************************
 *
 *	文 件 名:	jbWait.c
 *	說    明:	等待狀態
 *				處理:	1。監視振鈴;
 *						2。監視摘機;
 *						3。更新日分項合計記錄;
 *						4。查詢功能。
 *	起始日期: 	99/11/16
 *
 *
 ************************************************************/

//#pragma SRC
//#pragma DEBUG

#include <jbWait.h>

extern void DispCmd(byte);

void LockWait(void)
{
	byte bTemp;
 	byte bDispStatus;
 	byte bDayTotalPointer;
 	uint iTalkPointer;
 	uint xdata iTalkRecord;
 	bool fFirstKey=1,fToday=0;
 	bool fDispD=0;
 	bool fDispLock=0,fDispUnLock=0;		// 增加變量的目的是:減少CPU在待機時的運行時間、功耗
 	bool fEnCallId;
 	bool fDispDate=0;
 	bool fCheckFSK=0;
 	bool fCheckDTMF=0;
 	bool fFlagDisapear=0;
 	
 	AutoReadPara(80);					// 是否啟用來電顯示功能
 	if(bParaByte==1)
 		fEnCallId=1;
 	else
 		fEnCallId=0;
 	fFinishFSK=0;						// 用于控制
 	fFinishDTMF=0;
 	cbRingTimes=0;
    cbRingPulseNum=0;
	cbFangDao=200;
	bDialType=0;
	ciDelaySecond=0;					// 用于防并機定時
	fiDelaySecond=0;
	pReadNumber=0;
	pWriteNumber=0;
    fDaoDa=0;
    ciDaoDa=0;
    bFSKWord=0;
    
    Close(POWER_ON);
    AutoReadPara(67);
    iTalkRecord=iTalkPointer=iParaWord;				    //取話單指針
    AutoReadPara(71);
    bDayTotalPointer=bParaByte;							//日分項合計指針
    if(!fDelaySecond){
    	bDispStatus=4;					// 顯示話單狀態
    	fMustReport=1;
    }
    else{
    	DispClr();	
	    DispSymbol(LARGE_PHONE);
		bDispStatus=0;
		fSecond=1;
 		fDispD=1;
	}   
	fCallIdValid=0;
	ET2=0;
	TR2=0;
	Open(MD_CS);
	while(TRUE){
 	    IDLE;
 	    
 		if(OffHook()||(ciDaoDa==360)||fLockContinue){		// 防止并線盜打的行為
			pWriteNumber=pReadNumber=0;
			fCheckDTMF=0;
		}
		else if((!fEnCallId)&&(bAutoOffHookTimes!=0));
		else if(!fCheckDTMF){			// 測到DTMF 
			if(pReadNumber<pWriteNumber){	 				// 開始檢測DTMF //
				if(aNumBuf[0]<10){
					pReadNumber=0;
					fCheckDTMF=1;
					cbDelay5MS=100;			// 超時控制 
					fDelay5MS=0;
					fCallIdValid=0;
					fFinishDTMF=0;
				}
				else
					pWriteNumber=0;
			}
		}
		if(fCheckDTMF){
			if(pReadNumber<pWriteNumber){					// 檢測到有效撥號 
				if(aNumBuf[pReadNumber]<10){
					pReadNumber++;
					cbDelay5MS=100;
					fDelay5MS=0;
				}	
				else{					// 結束符號
					fDelay5MS=1;
					fCheckDTMF=0;
				}	
			}	
			if(fDelay5MS){				// 超時出錯	
				fDelay5MS=0;
				aNumBuf[pReadNumber]=0x0c;
				if(pReadNumber)
					pReadNumber--;
				CheckDTMF();
				memcpy(aDataBuf,aNumBuf,16);				// 判斷來電顯示號碼 	
				if(fEnCallId&&(pReadNumber>1)){				// 顯示來電號碼 		
					memset(aLargeBuf,0,20);
					memset(aSmallBuf,0,5);
					aLargeBuf[1]|=0x08;
					ET2=0;
					DispNum(LargeLcd);
					DispNum(SmallLcd);
					AutoReadPara(81);						// 來電號碼延時顯示時間 
					cbDelaySecond=bParaByte;
					fDelaySecond=0;
					bDispStatus=8;							// 延時顯示 
					if(CheckManagement())
						fCallIdValid=1;
					pReadNumber++;
					SaveCallId();
					pReadNumber--;
					DispDiscount();
					AutoReadPara(67);
    				iTalkRecord=iTalkPointer=iParaWord;	
					fFinishDTMF=1;
					bFSKWord=0;
				}	
				fCheckDTMF=0;
	    		pReadNumber=pWriteNumber=0;
			}
		}
		
		if(InComingCall()){
			if((bDispStatus!=0)&&(bDispStatus!=8)){
				bDispStatus=0;
            	memset(aLargeBuf,0,20);
            	DispCurrentTime();
				fDispD=1;
            	fDispLock=0;
            	fDispUnLock=0; 
            }	

			// DTMF 檢測來電顯示 	
			if((cbRingTimes>=1)&&(ciRingHigh>=20)){			// 若檢測到振鈴,就啟動檢測FSK信號 //
				if((!fEnCallId)&&(bAutoOffHookTimes!=0));
				else if(!fCheckFSK){
					for(bTemp=0;bTemp<55;bTemp++)			// 清緩沖區 
						aCallID[bTemp]=0;
					TR2=1;
					ET2=1;
					fCheckFSK=1;
					fDataOver=0;
					fFinishFSK=0;
					// 打開使能
					Close(MD_CS);
					// 開定時器 2,檢測來電號碼
				}	
				else if(fDataOver){			// 數據接收完畢 // 
					fFinishFSK=1;
					fDataOver=0;
					TR2=0;
					ET2=0;
					bFSKWord=0;				// 變量初始化 // 
					Open(MD_CS);
					//
					// 調試用,向串口發送來電顯示數據
//					SCON=0x40;							// 串口工作模式1,8位UART
//   					TH1=L9600;TL1=L9600;			// 串口9600BPS定時常數
//					TR1=1;ES=1;REN=1;TI=0;RI=0;
//					for(bTemp=0;bTemp<30;bTemp++)
//						TxByte(aCallID[bTemp]);
//					REN=0;TR1=0;ES=0;
            		//
            		//
					bTemp=CheckCallID();			// 判斷來電顯示號碼 
					if(fEnCallId&&(bTemp==2)){		// 顯示來電號碼 
						memset(aLargeBuf,0,20);
						memset(aSmallBuf,0,5);
						aLargeBuf[1]|=0x08;
						DispNum(LargeLcd);
						DispNum(SmallLcd);
						pReadNumber++;
						SaveCallId();
						pReadNumber--;
						AutoReadPara(67);
    					iTalkRecord=iTalkPointer=iParaWord;						
						DispDiscount();
						AutoReadPara(81);			// 延時顯示時間 
						bDispStatus=8;
						cbDelaySecond=bParaByte;
						fDelaySecond=0;
					}
					else if(bTemp==1){
						while(ciRingHigh<20)
							IDLE;
						if(DetectConnectTone(2))
		    				bStatusWord=S_DOWNCALL;
//	    				Open(POWER_ON);    
						return;
					}
				}
			}
			if(!fDispUnLock){
   	    		DispSymbol(LARGE_UNLOCK);					// 若有被叫,則不顯示鎖機標記
   	    		fDispUnLock=1;
   	    	}
   	    	fDispLock=0;
   	    	if(!fFlagDisapear){
   	    		fFlagDisapear=1;
   	    		if(aLargeBuf[8]==0x20){
					aLargeBuf[8]=0;
            		aSmallBuf[2]=0;
            		DispOut();
            	}	
            }	   	  
   	    }
   	 	else{							// 振鈴結束 
   	 		fFlagDisapear=0;
			if(fLocked){
				if(!fDispLock){
					fDispLock=1;
					DispSymbol(LARGE_LOCK);
				}
				fDispUnLock=0;
			}		

   	 		if(fCheckFSK){
	 			TR2=0;
				ET2=0;
				bFSKWord=0;
				fCheckFSK=0;
				Open(MD_CS);
			}	
			if(fFinishFSK)
				fFinishFSK=0;
		}
		if(JudgeAutoOffHook())
			return;	
        if(JudgeOffHook())
        	return;
		if(!fLocked){
			if(!fDispUnLock){
   	    		DispSymbol(LARGE_UNLOCK);					// 若有被叫,則不顯示鎖機標記
   	    		fDispUnLock=1;
   	    	}	
   	    	fDispLock=0;
		}	
		// 
 	    switch(bDispStatus){
 	        case 0:
				if(InComingCall()||(!fLocked));
		   	    else{
		   	    	if(!fDispLock){
       					DispSymbol(LARGE_LOCK);
       					fDispLock=1;
       				}	
       				fDispUnLock=0;
       			}	
       			if((cbRingTimes==0)||(bFSKWord<3)){			// 振鈴時,不更新顯示 
                	if(fSecond){
		        	    fSecond=0;
        	    	    DispCurrentTime();
        	    	    Page(6);
						if(fDispD||(XBYTE[0xc000]==0)){		// 只有在秒為0時才檢查是否是折扣時間
							fDispD=0;
							Page(5);
	        		        DispDiscount();
	        		    }
	        		    Page(5);
		        	    if(fMustReport){
			    			if(ReportBills())
			    				return;
	    				}		
		        	    DispSymbol(LARGE_PHONE);
		        	}
       				Flash(0);
       			}	
		        break;
		        
		    case 1:
		    	memset(aSmallBuf,'\0',5);  
		    	fDispDate=0;
                GetTalkRecord(iTalkPointer);	
               	DispTalk(iTalkPointer);				//顯示話單
       			DispSymbol(LARGE_UNLOCK);	
            	DispSymbol(LARGE_UNPHONE);
                bDispStatus=5;
                break;
                
            case 2:                					//用戶累計通話次數及總話費
				memset(aLargeBuf,'\0',20);
				memset(aSmallBuf,'\0',5);
				iAddress=PARA_60;
				DispTotal(6,0);
    	        bDispStatus=6;
	            break;

	        case 3:									//日分項合計
	            memset(aLargeBuf,'\0',20);
	            memset(aSmallBuf,'\0',5);
	            //DispClr();
				if(fToday){							//當日日分項合計
					fToday=0;
					iAddress=0xc02c;
                	DispMD(6);
                	iAddress+=2;
                	DispTotal(6,1);
                }
                else{
	                GetDayAddr(bDayTotalPointer);	
	                DispMD(1);
                	iAddress+=2;
        	        DispTotal(1,1);
        	    }    
	            bDispStatus=7;
	        	break;
	        	
			case 4:									// 話畢,顯示話單狀態
            case 5:                             	// 顯示話單狀態
            case 6:									// 顯示用戶累計值 			
            case 7:									// 顯示日分項和用戶合計	
            case 8:									// 來電延時顯示		
            	break;
            	
            default:
				fDispD=1;
                fDispLock=0;
                fDispUnLock=0;		  
            	bDispStatus=0;
            	break;	
        } 
        // 
        CheckFDD();
        PowerAlarm();
        if((!fLocked)&&fUnLockStat&&fWorkMode	// 若開鎖,延時后進入開鎖狀態
          &&(!fEndLockEnable)){					// 只有在新模式下,且開鎖統計參數設為有效
           	cbDelay5MS=190;
          	fDelay5MS=0;
           	while(!fDelay5MS) {IDLE;}
            bStatusWord=S_NEWUNLOCKWAIT;
            fDelaySecond=1;    
    	    lSubTariff=0;
		    iSubTimes=0;
            return; 
        }
   		if(fDateUpdate){
        	fDateUpdate=0;
            WriteDayTotal();	
        	AutoReadPara(71);
        	bDayTotalPointer=bParaByte;				//更新日分項合計指針
	    }
	    if(fDelaySecond&&(bDispStatus>3)){
	    	if(bDispStatus==8){
	    		fCheckDTMF=0;
	    		pReadNumber=0;
	    		pWriteNumber=0;
	    	}	
	        fDelaySecond=0;
            bDispStatus=0;
            memset(aLargeBuf,0,20);
            DispCurrentTime();
			fDispD=1;
            fDispLock=0;
            fSecond=1;
            fDispUnLock=0;
        } 
		if(!fFirstKey){
			if(bKeyBuf==0xf0)
				fFirstKey=1;
			continue;	
		}		
		
		if(bFSKWord>2)
			continue;
			
   		if(fKey){
        	fKey=0;
        	if((bDispStatus==4)||(bDispStatus==8)){		   	// 話畢顯示話單時,按任意鍵退出
        		if(cbKey>199)
        			continue;
                bDispStatus=0;					  
                DispClr();
                fSecond=1;
                fFirstKey=0;
				fDispD=1;
                fDispLock=0;
                fDispUnLock=0;
			    continue;
			}        
	        switch(bKeyBuf){
		        case K1:							 		// 顯示累計總通話次數、話費      				
                    if(bDispStatus==5){	
                    	if(!fDispDate){
                    		DispBillTime();
                    		PrintTalkRecord();
                    		fFirstKey=0;
                    		fDispDate=1;
                    	}
                    	else{	
                    		cbDelaySecond=6;
                    		fDelaySecond=0;
                    		bDispStatus=1;	
                    	}
                        break;
                    }    
                    if((bDispStatus==6)&&(cbKey<30))
                        fDelaySecond=1;    
					if((bDispStatus!=0)||(cbKey<220)) //只能從鎖機顯示時間狀態進入
                        break;						  //,查詢累計值狀態
                    bDispStatus=2;					  //長按鍵
                    cbDelaySecond=7;
                    fDelaySecond=0;
			        break;

       			case K2:
       				if(bDispStatus>5)
       					break;
       				if(cbKey>199)
       					cbKey=150;	
		            if((iTalkPointer--)==00)		//向前查詢話單
		            	iTalkPointer=iTalkLength;
                    cbDelaySecond=6;
                    fDelaySecond=0;
                    bDispStatus=1;
   			        break;    
    
	       		case K3:
       				if(bDispStatus>5)
       					break;
       				if(cbKey>199)
       					cbKey=150;	
		            if(iTalkPointer==iTalkRecord){	//向后查詢到盡頭
		                if((iTalkPointer--)==0)
		                	iTalkPointer=iTalkLength;
		                Speaker(15);    
		            }  
		            if(iTalkPointer==iTalkLength)	//向后查詢話單
		                iTalkPointer=0;
		            else
		            	iTalkPointer++;    
		            if(iTalkPointer==iTalkRecord){
		                if((iTalkPointer--)==0)
		                	iTalkPointer=iTalkLength;
		                Speaker(15);    
		            }        
                    cbDelaySecond=6;
                    fDelaySecond=0;
                    bDispStatus=1;    
   			        break;
       			
       			case K4:							//開鎖
       				if(cbKey>30)
       					break;
       				if(bDispStatus==0){
       					if(!fLockContinue){	
       						if(fLocked)
       							fLockRequest=1;
   	    		    		fLocked=~fLocked;
				        }    
   	    		    }
       				else
       					fDelaySecond=1;
		            break;
	
		        case K12:							//向前查詢日分項累計和
       				if(bDispStatus==5)				//need
       					break;
					if(cbKey>199)
						cbKey=100;
		        	if((bDayTotalPointer--)==0)
		        		bDayTotalPointer=bDayTotalLength;
		        	cbDelaySecond=6;
		        	fDelaySecond=0;
		        	bDispStatus=3;
   			        break;

    			case K13:							    //向后查詢日分項累計和
       				if(bDispStatus==5)					//need
       					break;
					if(cbKey>199)
						cbKey=100;
       				AutoReadPara(71);	
       				if(bDayTotalPointer==bParaByte){
       					Speaker(15);
       					fToday=1;
       				}	
		        	else if(bDayTotalPointer==bDayTotalLength)	
		        		bDayTotalPointer=0;
		        	else{
		        		bDayTotalPointer++;	
		        		if(bDayTotalPointer==bParaByte)
		        			fToday=1;
		        	}		
		        	cbDelaySecond=6;
		        	fDelaySecond=0;
		        	bDispStatus=3;
	       		    break;

		        default:
		            break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费高清在线观看| 成人蜜臀av电影| 国产大陆亚洲精品国产| 在线免费不卡视频| 久久亚洲综合色一区二区三区| 欧美一级艳片视频免费观看| 久久精品在线免费观看| 亚洲美女在线一区| 精品写真视频在线观看| 91视频在线看| 日韩欧美在线综合网| 日韩美女视频一区二区 | 亚洲欧美成aⅴ人在线观看| 综合网在线视频| 亚洲3atv精品一区二区三区| 国产麻豆精品久久一二三| 91国产成人在线| 久久婷婷国产综合国色天香| 久久精品一区四区| 亚洲gay无套男同| 成人精品国产一区二区4080| 91精品国产欧美一区二区成人 | 成人三级在线视频| 欧美年轻男男videosbes| 中文字幕一区日韩精品欧美| 麻豆精品蜜桃视频网站| 91久久一区二区| 国产精品人成在线观看免费| 免费xxxx性欧美18vr| 欧美在线播放高清精品| 国产精品久久二区二区| 狠狠色狠狠色综合| 欧美一卡2卡3卡4卡| 一区二区免费看| aaa国产一区| 中文字幕不卡三区| 国产一区二区三区免费在线观看| 4438亚洲最大| 亚欧色一区w666天堂| 91精彩视频在线观看| 1024亚洲合集| 成人av免费在线播放| 日本一区二区免费在线观看视频| 国产精品白丝jk黑袜喷水| 欧美一级黄色片| 男男gaygay亚洲| 91精品国产乱码久久蜜臀| 亚洲成人高清在线| 欧美精品日韩一区| 日韩国产欧美在线视频| 在线不卡的av| 亚洲三级电影全部在线观看高清| 成+人+亚洲+综合天堂| 一区在线播放视频| 国产精品1区2区| 欧美大片顶级少妇| 老司机午夜精品| 91精品国产综合久久久蜜臀图片| 亚洲午夜在线电影| 99视频一区二区| 中文字幕一区视频| 成人小视频在线观看| 久久嫩草精品久久久久| 国产一区二区网址| 亚洲婷婷在线视频| 国产麻豆成人精品| 国产精品国产自产拍高清av王其| 91亚洲男人天堂| 亚洲成av人片在线观看| 欧美一级二级三级乱码| 久久电影网电视剧免费观看| 国产亚洲精品中文字幕| 99久免费精品视频在线观看 | 一色桃子久久精品亚洲| 91高清视频在线| 日韩高清不卡一区| 精品国产乱码久久久久久蜜臀| 国产成人av电影在线| 亚洲精品成a人| 欧美精品日日鲁夜夜添| 国产一区二区三区在线看麻豆 | 欧美日韩国产欧美日美国产精品| 日精品一区二区| 久久久综合激的五月天| av一区二区久久| 首页亚洲欧美制服丝腿| 国产香蕉久久精品综合网| 色猫猫国产区一区二在线视频| 秋霞国产午夜精品免费视频| 国产精品水嫩水嫩| 7777精品久久久大香线蕉| 国产精品一区二区在线观看不卡| 亚洲精品自拍动漫在线| 欧美性xxxxx极品少妇| 另类小说色综合网站| 亚洲免费av在线| 国产午夜亚洲精品不卡| 3atv在线一区二区三区| 国产成人精品影视| 日韩av电影一区| 亚洲精品国产高清久久伦理二区| 欧美xxx久久| 日本韩国视频一区二区| 国产麻豆精品theporn| 亚洲一区二区三区四区在线观看| 久久精品一区二区三区av| 欧美精品在线视频| 99re成人在线| 丁香婷婷综合五月| 九色|91porny| 天堂蜜桃一区二区三区| 18成人在线观看| 国产三级久久久| 欧美变态tickle挠乳网站| 欧美三级日韩三级国产三级| 国产精品白丝av| 午夜精彩视频在线观看不卡| 国产三级精品在线| 欧美日韩高清不卡| 欧美蜜桃一区二区三区| 欧亚洲嫩模精品一区三区| av福利精品导航| 国产精品一品二品| 国产乱码精品一区二区三区av| 日产欧产美韩系列久久99| 亚洲电影视频在线| 亚洲国产视频一区| 一区二区欧美国产| 亚洲男人天堂av| 亚洲精品网站在线观看| 中文字幕亚洲在| 亚洲色图欧洲色图婷婷| 中文字幕一区二区三区在线播放| 欧美国产视频在线| 欧美国产激情二区三区| 中文字幕在线一区免费| 中文字幕av在线一区二区三区| 亚洲国产高清不卡| 中文字幕色av一区二区三区| 国产精品久久久久久久久晋中| 国产精品卡一卡二| 亚洲三级在线免费观看| 亚洲综合视频网| 日韩主播视频在线| 一区二区三区欧美久久| 亚洲欧洲www| 天天操天天综合网| 免费观看在线色综合| 激情综合网激情| 国产激情一区二区三区四区 | 26uuu亚洲婷婷狠狠天堂| 欧美精品一区二区三区在线播放| 欧美r级在线观看| 国产精品丝袜一区| 一区二区三区四区高清精品免费观看 | 欧美一区二区在线播放| 欧美成人精品高清在线播放| 国产亚洲一区二区三区四区 | 日本美女一区二区三区视频| 久久精品噜噜噜成人88aⅴ| 国产一区二区中文字幕| 97aⅴ精品视频一二三区| 欧美日韩成人综合| 国产亚洲午夜高清国产拍精品| 中文字幕精品三区| 亚洲国产成人精品视频| 国产做a爰片久久毛片| 不卡一区在线观看| 91精品国产综合久久久久久久| 国产亚洲一区字幕| 亚洲五月六月丁香激情| 国内精品不卡在线| 欧美最猛性xxxxx直播| 精品国产伦一区二区三区观看方式 | 777午夜精品视频在线播放| 久久久久久久久伊人| 亚洲一区在线观看免费| 国内精品不卡在线| 欧美最猛性xxxxx直播| 久久免费午夜影院| 亚洲图片有声小说| 成人性生交大片免费看中文| 欧美日韩国产综合一区二区三区 | 亚洲成年人网站在线观看| 黑人巨大精品欧美一区| 在线免费观看日韩欧美| 国产亚洲人成网站| 青青国产91久久久久久| 91亚洲精品一区二区乱码| www国产成人| 天天亚洲美女在线视频| 91麻豆国产香蕉久久精品| 久久久久久久久免费| 奇米色一区二区| 精品视频资源站| 亚洲女人****多毛耸耸8| 国产电影一区在线| 亚洲精品在线一区二区| 麻豆专区一区二区三区四区五区| 日韩一区二区三区观看|