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

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

?? jbdata.c

?? 電話PSTN線路上FSK處理軟件。。。。。。。。。
?? C
?? 第 1 頁 / 共 2 頁
字號:

/*******************************************************
 *
 *	文	件: jbdata.c
 *	功	能:	存放通信過程中的子函數
 *
 ******************************************************/
#include <jbData.h>

//#pragma SRC
//#pragma DEBUG

/************************************************************
 *
 *		函	數:Dial()
 *		功	能:Modem撥號
 *		出	口:聯絡成功,返回TRUE;出錯或聯絡失敗,返回FALSE。
 *
 ***********************************************************/
bool Dial(void)
{
	byte i,j,bTemp;
	byte bRecallTimes;
	CheckSumTest();							    // 計算所有可檢驗參數檢驗和
	memcpy(&aTestPara,&aNumBuf,9);			    // test
	if(!fWorkMode){
		AutoReadPara(211);						// 初始化各種控制標志位
		fbBuf1=bParaByte;					
		AutoReadPara(202);
		AutoReadPara(204);
	}	
	else{
		AutoReadPara(13);
		if(bParaByte!=0)
			fDialForm=1;
		AutoReadPara(01);
		AutoReadPara(04);
	}
	for(i=0;i<8;i++){
		aNumBuf[2*i]=aParaBuf[i]>>4;
		aNumBuf[2*i+1]=aParaBuf[i]&0x0f;
	}
	if(!fWorkMode)	
		memset(&aNumBuf[8],0x0c,8);				// OLD模式,只使用8個號碼
	bRecallTimes=bParaByte&0x0f;		
	DispClr();
	DispSymbol(LARGE_PHONE);
	Delay5MS(255);
	Close(RLY);
	do{
		Close(POWER_ON);
		DispClr();
   		DispSymbol(LARGE_PHONE);
   		Close(MLD);
		DelaySecond(3);							// 掛機3秒
		Open(MLD);
   		DispSymbol(LARGE_HOOK);
   		DispSymbol(LARGE_COMM);
   		MD_CLK=0;
		DelaySecond(2);
//		Open(POWER_ON);
		if(fDialForm){
			WriteModem(CR1,0x00);
			WriteModem(CR0,0x1a);
		}
		for(i=0;i<16;i++)						// 撥號
		{		
			bTemp=aNumBuf[i];
			if(bTemp==0x0c)
				break;
			if(i<11)	
				aLargeBuf[i]=aLCDSegment[bTemp];	
			DispSymbol(LARGE_HOOK);
			bTemp=aNumBuf[i];
			if(bTemp>9)
				break;
			else if(bTemp==0)
				bTemp=0x0a;
			if(fDialForm){	
				WriteModem(TR,bTemp);
				WriteModem(CR0,0x1a);
				bTemp=ReadModem(TR);
				WriteModem(TR,(bTemp|0x10));
				Delay5MS(21);
				bTemp=ReadModem(TR);
				WriteModem(TR,(bTemp&0xef));
				WriteModem(CR0,0x00);
				Delay5MS(20);
			}
			else{									// 脈沖撥號方式
				for(j=0;j<bTemp;j++){
					Close(MLD);
					Delay5MS(13);
					Open(MLD);
					Delay5MS(7);
				}
				Delay5MS(80);
			}	
			cbDelay5MS=5;							// 發模擬撥號音
			fDelay5MS=FALSE;
			Page(6);
			XBYTE[0xc00b]=0x1a;			
			Page(5);
			while(!fDelay5MS) 
				IDLE;
		}	
   		MD_CLK=1;
		WriteModem(CR1,0x04);
		if(DetectConnectTone(0))		// 檢測通信聯絡音'D'
			return TRUE;
	}while(--bRecallTimes!=0);
	bFailTimes=8;
	return FALSE;
}
// End function: Dial()
			
/*********************************************************************
 *
 *	函	數:	DetectConnectTone()
 *	功	能:	接收通信聯絡音“D”;
 *	入	口: bWhich=0:計費器主動上呼時調用,檢測到“D”,
 *			返回TRUE,否則返回FALSE;等待時間為20秒;
 *			bWhich=1:管理機呼叫,計費器手動摘機時調用,檢測到“D”,
 *			返回TRUE,否則返回假;等待時間由參數31決定;
 *			bWhich=2:管理機呼叫,計費器自動摘機時調用,檢測到“D”,
 *			返回TRUE,否則發出三聲催摘音后,返回假。等待時間由參數31決定;
 *
 ********************************************************************/
bool DetectConnectTone(byte bWhich)
{
    byte bTemp,i;
    byte bWaitTime;								//單位:100ms
	ResetModem();
    if(bWhich==0)
    	bWaitTime=200;
	else{
    	Open(MLD);
		DispClr();
		DispSymbol(LARGE_HOOK);
		if(fWorkMode){
			AutoReadPara(31);
			bWaitTime=(byte)(iParaWord/20);
			if(bWaitTime<16)					//測‘D’音時長不能小于1600毫秒。
				bWaitTime=16;
		}	 
		else{
			AutoReadPara(51);
			if((bParaByte&0x40)!=0)
				bWaitTime=20;
			else
				bWaitTime=16;
		}
		Delay5MS(1);
    	Close(RLY);
	}
    while(TRUE){
        cbDelay5MS=20;
        fDelay5MS=0;
		while(!fDelay5MS){
			IDLE;
			bTemp=ReadByte(IN_CE,6)&0x04;
    	    if(bTemp!=0){
    	    	bTemp=ReadByte(DTMF_ENB,7)&0x0f;
            	if(bTemp==0){ 					//測到‘D’音
            		DispSymbol(LARGE_FLASH);
			   		DispSymbol(LARGE_COMM);
//					Open(POWER_ON);
            		return TRUE;
            	}
            	DispSymbol(LARGE_FLASH);
				DispSymbol(LARGE_COMM);
//				Open(POWER_ON);
    			return TRUE;
	        }
		}
        if(--bWaitTime==0)          			//超時退出
            break;
    }
    DispSymbol(LARGE_FLASH);
	DispSymbol(LARGE_COMM);
//	Open(POWER_ON);
    return TRUE;
    //沒有測到‘D’音,提醒用戶摘機
    if(bWhich==2){
    	Open(RLY);								//自動摘機后,接話機
        DispClr();
        DispSymbol(LARGE_PHONE);
        bTemp=3;
        while(bTemp!=0){
            --bTemp;
            for(i=0;i<3;i++){
            	Speaker(18);
                while(!fDelay5MS){
                	if(OffHook()){
                		i=100;
                		break;
                	}	
                	IDLE;
                }	
                Delay5MS(18);
            }
            if(i==100)
            	break;
            bWaitTime=16;              			// 在1.6秒內等待摘機 
            i=0;
            while(TRUE){
                cbDelay5MS=20;
                fDelay5MS=0;
                while(!fDelay5MS){
					IDLE;
					if(OffHook()){
						i=1;
						break;
					}	
                }
            	if(i!=0)
	               	break;
	            if(--bWaitTime==0) 
	            	break;
            }
        } // End outside for(;;)
        if(OffHook());
        else{
        	Close(MLD);
        	fDelaySecond=1;
        	return FALSE;
        }	
    }
    if(bWhich==1)					//手動摘機的情況
    	Open(RLY);
	if(bWhich!=0){					//不是系統的呼叫
    	if(fWorkMode)
			bStatusWord=S_NEWSLAVECALL;
		else
			bStatusWord=S_OLDSLAVECALL;
		AutoReadPara(55);
		if(bParaByte==1)			//模擬負載延時斷開
			ciiDelaySecond=4;
		else{	
	    	Delay5MS(30);
			Close(MLD);
			ciiDelaySecond=3;		//不并模擬負載
		}	
		fiiDelaySecond=0;	
	}		
    return FALSE;
}
// End function: DetectConnectTone()

/*******************************************************************
 *
 *		函數名:ConnectModem()
 *		功	能:計費器MODEM與管理系統MODEM卡的聯絡過程
 *		用	途:管理機下傳和計費器上呼時
 *		注	意:計費器 MODEM  處于應答模式,管理系統MODEM處于發起模式
 *
 ******************************************************************/
bool ConnectModem(void)
{
	byte bTemp;
	bool fSelect=0;
	EX0=1;
	MD_CLK=0;
	Delay5MS(4);
	AutoReadPara(57);
	if(bParaByte==1){		           //300 bps
		bParaByte=0;
		AutoWritePara(77);
		WriteModem(CR1,0x04);
		WriteModem(CR0,0xb2);
		WriteModem(TR,0x00);
		WriteModem(CR1,0x10);
		cbDelaySecond=8;
		fDelaySecond=0;
		while(1){
			if(fDelaySecond)
				return 0;
			bTemp=ReadModem(DR);	
			if((bTemp&0x08)!=0){
				Delay5MS(96);
				TH1=L300;
				TL1=L300;
				break;
			}	
		}	
		
	}
	else{								//1200 bps		
		WriteModem(CR1,0x04);
		DelaySecond(2);
		Delay5MS(32);
		WriteModem(CR1,0x04);
		WriteModem(TR,0xa1);
		WriteModem(CR0,0x1a);
		WriteModem(CR1,0x90);
		DelaySecond(3);
		Delay5MS(120);
		WriteModem(CR0,0x18);
		Delay5MS(16);
		WriteModem(TR,0xc0);
		WriteModem(CR1,0x90);
		WriteModem(CR0,0x1a);
		Delay5MS(128);
		cbDelaySecond=3;
		fDelaySecond=0;
		while(1){
			if(fDelaySecond)
				return FALSE;
			bTemp=ReadModem(DR);	
			if((bTemp&0x08)!=0){
				WriteModem(CR1,0x80);
				Delay5MS(136);
				WriteModem(TR,0x40);
				WriteModem(CR1,0x00);
				TH1=L1200;
				TL1=L1200;
				break;
			}	
		}	
	}	
	EX1=0;
	TI=0;
	RI=0;
	TR1=1;
    REN=1;
    ES=1;
    bLastCmd=0xff;
	fRxDataReady=0;
	fTxDataReady=0;
	return TRUE;
}
// End function: ConnectModem()

/***********************************************************
 *
 *	函數名:ResetModem()
 *	功	能:初始化CML644A芯片
 *
 **********************************************************/
void ResetModem(void)
{
	Page(7);
	XBYTE[0x8001]=0x04;
	Page(5);
	MD_CLK=1;
}
// End function: ResetModem()
 
/*******************************************************************
 *
 *		函數名:ReadModem()
 *		功	能:從CML644A中由bAddr指定的寄存器中讀出字節返回
 *
 *******************************************************************/
byte ReadModem(byte bAddr)
{
 	byte i;
	Page(7);
	i=XBYTE[0x8000+bAddr];
	Page(5);
	return i;
}
// End function: ReadModem()
 
/**********************************************************
 *
 *
 *		函數名:WriteModem()
 *		功	能:將bData寫入CML644A芯片bAddr寄存器
 *
 *
 **********************************************************/
void WriteModem(byte bAddr,byte bTemp)
{
	Page(7);
	XBYTE[0x8000+bAddr]=bTemp;
	Page(5);
}
// End function: WriteModem()

/******************************************************************
 *
 *		函數名:TxByte()			
 *		功	能:發送一個字節
 *
 ******************************************************************/
bool TxByte(byte bByte)
{
	SBUF=bByte;
	while(!fTxDataReady) {;}
	bLastCmd=0xff;
	fTxDataReady=0;
	return TRUE;
}                           
// End function: TxByte()

/******************************************************************
 *
 *		函數名:TxCmd()			
 *		功	能:往CBUS口發送一條命令
 *
 ******************************************************************/
void TxCmd(byte bCmd)
{
	FlashComm();
	TxByte(bCmd);
	TxByte(~bCmd);
	bLastCmd=bCmd;						//Add for Resend command
}
// End function: TxCmd() 
 
/******************************************************************
 *
 *		函數名:RxByte()			
 *		功	能:接收一個字節
 *
 ******************************************************************/
bool RxByte(void)
{
    cbDelaySecond=SLAVE_TIME_OUT;
    fDelaySecond=FALSE;
	while(TRUE){
    	if(fRxDataReady){
		    fRxDataReady=FALSE;
           	return TRUE;
        }
        if(fWaitExit){
			if(fKey){
				fKey=0;
				if(bKeyBuf==K1)
					return TRUE;
			}		
			continue;
		}	
   	    if(fDelaySecond){
   	    	if(bErrorCode!=0x24)
   	    		bErrorCode=ERR_02;
			return FALSE;	
		}	
	}	
}
// End function: RxByte()
 
/******************************************************************
 *
 *		函數名:RxCmd()			
 *		功	能:從CBUS口接收一條命令
 *
 ******************************************************************/
bool RxCmd(void)
{
	bool fErrOneTime=FALSE;
	byte i;
	byte aTemp[2];
	byte bSendTimes;
   	if(bStatusWord==S_SERVICE)			// 在老模式的操作方式中,取消鍵無效
   		fWaitExit=0;
	for(bSendTimes=0;bSendTimes<3;bSendTimes++){
		for(i=0;i<2;i++){				// 用于重發命令,重發的命令存于bLastCmd
			if(!RxByte()){
				if(fErrOneTime)
					return FALSE;
				fErrOneTime=TRUE;
				i=0xff;
				continue;
			}	
			if(fWaitExit){
				if(bKeyBuf==K1){
					bErrorCode=KEY_EXIT;
					return TRUE;
				}
			}		
			if(fFirstCmd&&(i==0)&&
			  ((bRecSBUF<0x30)||(bRecSBUF>0x90))){	//消除干擾
				i=0xff;
				continue;
			}	
			aTemp[i]=bRecSBUF;
		}	
		if(aTemp[0]==~aTemp[1]){
			bRecSBUF=aTemp[0];
			if((bLastCmd<0x99)&&(bRecSBUF==ERR_CS)){
				TxByte(bLastCmd);					//對方接收命令校驗出錯,重發上一個命令
				TxByte(~bLastCmd);
				continue;
			}
			bLastCmd=0xff;
			return TRUE;
		}
		TxCmd(ERR_CS);
	}
	bLastCmd=0xff;
	bErrorCode=ERR_08;	
	return FALSE;
}			
// End function: RxCmd()

/******************************************************************
 *
 *		函數名:	RxFirstOK()			
 *		功	能:	上呼時接收第一個OK
 *
 ******************************************************************/
bool RxFirstOK(void)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba桃花| 亚洲成人激情综合网| 欧美一区二区国产| 色8久久人人97超碰香蕉987| 成人黄色一级视频| 天天综合色天天综合| 亚洲免费av观看| 国产精品欧美久久久久一区二区| 日韩一二三区视频| 91精品免费观看| 91精品国产欧美一区二区18| 欧美日韩一二区| 麻豆一区二区99久久久久| 日韩精品一区二区三区视频播放| 91黄色免费观看| 97国产一区二区| 色菇凉天天综合网| 欧美丝袜丝交足nylons| 欧美吞精做爰啪啪高潮| 欧美男男青年gay1069videost| 欧美探花视频资源| 91精品国产综合久久婷婷香蕉| 欧美午夜精品免费| 欧美日韩国产另类一区| 欧美一二三区在线观看| 精品美女在线播放| 国产精品亲子伦对白| 最新国产の精品合集bt伙计| 亚洲欧洲日韩一区二区三区| 亚洲欧美日韩一区二区| 性欧美大战久久久久久久久| 精品一区二区三区在线播放视频| 国产乱人伦偷精品视频不卡| 日韩一区二区在线观看视频| 在线播放亚洲一区| 国产欧美日韩在线视频| 亚洲成av人在线观看| 激情国产一区二区| 色欧美乱欧美15图片| 日韩欧美中文字幕精品| 国产精品高潮久久久久无| 亚瑟在线精品视频| 岛国一区二区在线观看| 欧美乱妇15p| 国产精品久久免费看| 日本欧美一区二区三区乱码 | 亚洲夂夂婷婷色拍ww47| 国内不卡的二区三区中文字幕| 东方欧美亚洲色图在线| 欧美一卡2卡三卡4卡5免费| 18涩涩午夜精品.www| 国产一二精品视频| 精品日本一线二线三线不卡| 一区二区激情视频| 91麻豆免费视频| 国产精品视频一区二区三区不卡| 麻豆精品在线观看| 宅男在线国产精品| 亚洲成人中文在线| 91丨九色丨国产丨porny| 久久精品一区蜜桃臀影院| 日韩国产欧美一区二区三区| 欧美日韩黄色一区二区| 亚洲激情在线播放| 99精品视频一区二区| 国产精品黄色在线观看| www.亚洲国产| 国产精品免费视频网站| 成人午夜视频在线观看| 欧美mv和日韩mv的网站| 韩国三级中文字幕hd久久精品| 日韩一区二区三区视频在线观看 | 秋霞午夜鲁丝一区二区老狼| 99精品视频中文字幕| 亚洲人精品午夜| 色婷婷亚洲综合| 亚洲一区二区美女| 欧美一区二区三区成人| 麻豆一区二区在线| 久久久久久一二三区| 成人短视频下载| 亚洲五码中文字幕| 精品美女一区二区| 在线观看亚洲专区| 日产国产高清一区二区三区| 久久午夜色播影院免费高清| av亚洲精华国产精华精华| 国产精品免费久久| 欧美午夜精品久久久久久孕妇| 婷婷综合久久一区二区三区| 欧美精品一区二区三区蜜臀| www.亚洲精品| 精品一区二区日韩| 亚洲一区中文日韩| 欧美精品一区二区三区在线| 97aⅴ精品视频一二三区| 国产一区二三区好的| 亚洲第一福利一区| 国产精品二三区| 337p日本欧洲亚洲大胆色噜噜| 日本乱人伦一区| 成人黄色在线网站| 麻豆精品在线播放| 亚洲成人综合在线| 亚洲三级理论片| 国产亚洲短视频| 五月婷婷综合在线| 成人欧美一区二区三区黑人麻豆| 欧美mv日韩mv国产网站app| 欧美日韩电影一区| 欧美日韩精品电影| 91精品国产91久久久久久一区二区 | 国产精品区一区二区三| 久久嫩草精品久久久久| 3d成人动漫网站| 91精品国产欧美一区二区成人 | 国产在线播放一区三区四| 日韩不卡在线观看日韩不卡视频| 最好看的中文字幕久久| 国产精品久久二区二区| 国产精品麻豆一区二区| 国产精品天天看| 国产精品美女久久久久aⅴ| 亚洲天堂中文字幕| 国产精品久久久久久久久免费樱桃| 国产精品欧美极品| 亚洲免费在线看| 奇米精品一区二区三区四区| 免费在线成人网| 国产精品羞羞答答xxdd | 国产一区二区精品久久91| 成人黄色综合网站| 日本久久一区二区三区| 日韩欧美中文一区| 国产女人18毛片水真多成人如厕 | 亚洲素人一区二区| 午夜成人免费视频| 韩国午夜理伦三级不卡影院| jlzzjlzz欧美大全| 欧美日韩视频在线观看一区二区三区| 在线播放/欧美激情| 久久久久久免费| 亚洲综合激情网| 国产精品香蕉一区二区三区| 91麻豆福利精品推荐| ww亚洲ww在线观看国产| 亚洲美女精品一区| 伦理电影国产精品| 在线视频一区二区三| 欧美精品一区二区在线观看| 亚洲综合丁香婷婷六月香| 国产原创一区二区| 91精品麻豆日日躁夜夜躁| 亚洲欧美在线高清| 国产一区二区三区高清播放| 欧美日韩午夜在线| 樱桃视频在线观看一区| 成人黄色在线视频| 中文字幕欧美日韩一区| 麻豆精品一区二区三区| 欧美电影一区二区| 亚洲愉拍自拍另类高清精品| 成人网在线免费视频| 久久精品综合网| 激情国产一区二区| 国产视频视频一区| 国产.精品.日韩.另类.中文.在线.播放 | 不卡一区二区三区四区| 久久久久国产免费免费 | 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美日韩午夜精品| 美女mm1313爽爽久久久蜜臀| 欧美一区二区三区视频免费播放 | 精品久久久久久久久久久久久久久 | 国产精品久久久久影院老司| 99久久久精品| 亚洲永久精品国产| 欧美一二三在线| 国产福利不卡视频| 国产精品理论片在线观看| 91丝袜美腿高跟国产极品老师| 亚洲蜜臀av乱码久久精品 | 亚洲午夜一二三区视频| 91精品国产欧美一区二区| 国产一区在线观看麻豆| 国产精品乱码人人做人人爱| 一本色道综合亚洲| 欧美aa在线视频| 中文字幕日韩精品一区| 欧美另类久久久品| 国产一区二区成人久久免费影院| 国产精品私房写真福利视频| 在线欧美小视频| 国产美女视频一区| 香蕉久久一区二区不卡无毒影院 | 伊人婷婷欧美激情| 日韩欧美一区二区不卡| 在线亚洲+欧美+日本专区| 国产成人精品网址| 日本aⅴ免费视频一区二区三区|