亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久99国产精品尤物| 久久精品国产网站| 日韩一区二区精品在线观看| 国产精品一区二区三区四区| 一卡二卡欧美日韩| 久久精品水蜜桃av综合天堂| 欧美色欧美亚洲另类二区| 国产成人8x视频一区二区| 日韩va亚洲va欧美va久久| 亚洲免费观看高清完整版在线观看 | 成人免费视频caoporn| 日本欧美一区二区三区乱码| 一区二区三区影院| 国产精品久久一级| 精品国产凹凸成av人网站| 欧美精品免费视频| 日本乱码高清不卡字幕| 国产成人精品一区二区三区四区| 亚洲成a人在线观看| 中文字幕日韩欧美一区二区三区| 日韩欧美国产小视频| 欧美人狂配大交3d怪物一区| 99久久99精品久久久久久| 国产传媒欧美日韩成人| 精品制服美女丁香| 蜜臀av一区二区三区| 午夜a成v人精品| 亚洲男女一区二区三区| 成人欧美一区二区三区白人| 中文子幕无线码一区tr| 久久先锋影音av鲁色资源| 日韩欧美视频在线| 精品成人佐山爱一区二区| 91精品视频网| 欧美一区2区视频在线观看| 欧美二区三区的天堂| 欧美日韩小视频| 欧美午夜精品一区| 欧美日韩精品三区| 欧美一区二区性放荡片| 欧美二区在线观看| 欧美xxx久久| 久久一留热品黄| 国产欧美一区二区精品性| 国产喷白浆一区二区三区| 国产农村妇女精品| 亚洲欧洲精品成人久久奇米网| 中文字幕在线播放不卡一区| ●精品国产综合乱码久久久久| 中文字幕亚洲在| 亚洲中国最大av网站| 成人午夜激情影院| 国产.精品.日韩.另类.中文.在线.播放| 国产成人精品免费网站| 成人激情免费视频| 欧美亚洲一区二区三区四区| 欧美日韩精品欧美日韩精品一| 欧美一区二区在线不卡| 26uuu亚洲| 国产精品第五页| 香蕉乱码成人久久天堂爱免费| 日韩激情av在线| 韩国欧美一区二区| 一本一道久久a久久精品综合蜜臀| 一本到三区不卡视频| 欧美精品18+| 久久老女人爱爱| 亚洲码国产岛国毛片在线| 亚洲va欧美va人人爽| 国产一区二区三区观看| 99久久久国产精品免费蜜臀| 欧美探花视频资源| 26uuu国产日韩综合| 中文字幕一区二区三区在线播放| 一区二区三区蜜桃| 精品一区二区三区影院在线午夜| 成人性生交大片免费| 欧美色图免费看| 国产亚洲午夜高清国产拍精品| 亚洲日本护士毛茸茸| 蜜臀久久99精品久久久久宅男 | 国产精品国产精品国产专区不蜜 | 久久久www免费人成精品| 一区视频在线播放| 全部av―极品视觉盛宴亚洲| 国产成+人+日韩+欧美+亚洲| 欧美日韩一区久久| 国产精品视频一二| 青青国产91久久久久久| 91网站黄www| 26uuu亚洲婷婷狠狠天堂| 亚洲综合色区另类av| 国产一区二区三区免费看| 91免费看`日韩一区二区| 欧美tk—视频vk| 亚洲精品视频自拍| 国产精品一区二区久激情瑜伽| 欧美性大战久久久久久久| 久久精品国产色蜜蜜麻豆| 色噜噜狠狠成人网p站| 久久综合九色综合97_久久久| 亚洲综合无码一区二区| 国产sm精品调教视频网站| 在线综合亚洲欧美在线视频| 日韩毛片一二三区| 国产成人在线影院| 欧美大片一区二区三区| 一区二区三区中文字幕在线观看| 国产乱国产乱300精品| 欧美一区二区在线不卡| 亚洲国产你懂的| av亚洲精华国产精华精华| 欧美精品一区二区三区蜜桃| 午夜婷婷国产麻豆精品| 色婷婷亚洲综合| 成人欧美一区二区三区视频网页| 国产精品一区二区三区99| 欧美一区二区精品久久911| 亚洲国产日日夜夜| 欧洲精品一区二区| 亚洲桃色在线一区| 成人看片黄a免费看在线| 久久午夜电影网| 国产一区二区三区蝌蚪| 日韩免费一区二区| 日韩和欧美的一区| 欧美日韩电影一区| 午夜亚洲国产au精品一区二区| 色88888久久久久久影院按摩 | 亚洲男人天堂一区| av中文字幕在线不卡| 国产精品免费免费| voyeur盗摄精品| 日韩毛片精品高清免费| 91麻豆精品秘密| 亚洲欧美国产三级| 日本精品一级二级| 亚洲成人午夜影院| 欧美一级理论性理论a| 日本中文字幕不卡| 精品日韩av一区二区| 久久国产精品色婷婷| 久久综合九色综合97_久久久| 国产精品1区2区3区在线观看| 久久久91精品国产一区二区精品 | 日本一区二区动态图| 成人黄色一级视频| 亚洲欧洲日本在线| 欧美日韩在线直播| 日本麻豆一区二区三区视频| 欧美成人a视频| 国产91丝袜在线观看| 亚洲人成电影网站色mp4| 在线中文字幕一区| 日韩高清不卡一区| 欧美v日韩v国产v| www.久久精品| 天堂资源在线中文精品| 精品少妇一区二区三区日产乱码 | 欧美激情在线免费观看| 99热国产精品| 亚洲在线观看免费| 欧美一级淫片007| 国产成人在线色| 亚洲精品久久久久久国产精华液| 欧美日韩久久一区| 欧美色综合网站| 国产精品亚洲专一区二区三区| 欧美国产日韩精品免费观看| 欧美亚洲综合网| 国产精品一区二区黑丝| 亚洲精品福利视频网站| 欧美一区二区三区不卡| 成人午夜激情视频| 日日噜噜夜夜狠狠视频欧美人| 久久久久亚洲蜜桃| 欧美性生活久久| 国产成a人无v码亚洲福利| 亚洲国产人成综合网站| 久久精品在这里| 欧美日韩国产精品成人| 国产美女在线观看一区| 一级女性全黄久久生活片免费| 欧美精品一区二区三区四区 | 2023国产精品自拍| 色久综合一二码| 国产一区二区三区最好精华液| 亚洲欧美日韩一区二区三区在线观看| 欧美一级午夜免费电影| 色综合色综合色综合| 国产精品18久久久久久vr| 亚洲一级电影视频| 欧美激情在线观看视频免费| 在线不卡中文字幕| 99久久99久久精品国产片果冻 | 久久9热精品视频| 亚洲一区二区视频| 国产精品久久免费看| 日韩一区二区在线看片| 91麻豆免费看|