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

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

?? jbdata.c

?? 電話PSTN線路上FSK處理軟件。。。。。。。。。
?? C
?? 第 1 頁 / 共 2 頁
字號:
	bool fFirstOk=0;
	cbDelaySecond=4;
	fDelaySecond=FALSE;
	while(TRUE){
		if(fDelaySecond){
			bErrorCode=ERR_35;
			break;
		}	
    	if(!fRxDataReady)
    		continue;
	    fRxDataReady=FALSE;
   		if(!fFirstOk){
   			if(bRecSBUF==OK)
   				fFirstOk=1;
   			continue;
   		}
   		else if(bRecSBUF==0xfe)
	   		return TRUE;
	}
	return FALSE;
}
// End function: RxFirstOK()

/***************************************************************
 *
 *		函	數: RxPaNe()
 *		說	明: 接收管理機下傳的Pa,Ne,并作應答處理 
 *
 **************************************************************/
bool RxPaNe(void)
{
	byte i,aTemp[3];
	bool fFalse=FALSE;
	byte bSendTimes;
	for(bSendTimes=0;bSendTimes<3;bSendTimes++){	
		for(i=0;i<3;i++){
			if(!RxByte()){
				if(fFalse)
					return FALSE;
				fFalse=TRUE;
				i=0xff;
				continue;
			}
			aTemp[i]=bRecSBUF;
			if((i==1)&&(aTemp[0]==ERR_CS)&&(aTemp[1]==~ERR_CS)){
				TxCmd(bLastCmd);
				i=0xff;
				continue;
			}	
		}					
		if(aTemp[2]==(byte)(aTemp[0]+aTemp[1])){
			bPaBuf=aTemp[0];
			bNeBuf=aTemp[1];
			iPaNeNum=((uint)bPaBuf*128)+bNeBuf;
			iParaWord=iPaNeNum;
			return TRUE;
		}
		TxCmd(ERR_CS);
	}
	bErrorCode=ERR_04;
	return FALSE;
}
// End function: RxPaNe()

/***************************************************************
 *
 *		函	數: TxPaNe()
 *		說	明: 向管理機發送Pa,Ne,并等待答應 
 *
 **************************************************************/
bool TxPaNe(void)
{
	byte i;
	iPaNeNum=(uint)(bPaBuf*128)+bNeBuf;
	for(i=0;i<3;i++){
		TxByte(bPaBuf);
		TxByte(bNeBuf);
		TxByte(bPaBuf+bNeBuf);
		if(!RxCmd())
			return FALSE;
		if(bRecSBUF==OK)
			return TRUE;
		else if(bRecSBUF!=ERR_CS){
			bErrorCode=ERR_05;
			return FALSE;
		}
	}
	bErrorCode=ERR_04;
	return FALSE;
}
// End function: TxPaNe()

/******************************************************************
 *
 *	函數名:RxData()			
 *	功	能:從CBUS口接收由bPaBuf,bNeBuf指定的數據
 *			數據被順序緩沖在aDataBuf[]中
 *			包函接收數據和給出應答
 *
 ******************************************************************/
bool RxData(void)
{
	bool fOneTimes;
	byte i,j,bCheckSum;
	uint iAddr=0;
	if(iPaNeNum!=0) 
		TxCmd(OK);			
	while(bPaBuf!=0){
		for(i=0,fOneTimes=FALSE;i<3;i++){
			for(j=0,bCheckSum=0;j<129;j++){
				if(!RxByte()){
					if((j>=1)&&
					(aDataBuf[iAddr]==ERR_CS)&&(aDataBuf[iAddr+1]==~ERR_CS)){
						aDataBuf[iAddr]=0;
						aDataBuf[iAddr+1]=0;
						TxCmd(bLastCmd);
						j=0xff;
						continue;
					}	
					if(fOneTimes)
						return FALSE;							
					else{
						fOneTimes=TRUE;
						j=0xff;
						continue;
					}
				}
				if(j<128){
					bCheckSum+=bRecSBUF;
					aDataBuf[iAddr+j]=bRecSBUF;
				}
			} // End for(j...)
			if(bCheckSum!=bRecSBUF){				//若校驗和不正確,重新發送數據
				TxCmd(ERR_CS);	
				continue;
			}
			iAddr+=128;
			Flash(1);
			if((--bPaBuf!=0)||(bNeBuf!=0))
				TxCmd(OK);
			break;
		} // End for(i...)
		if(i==3){
			bErrorCode=ERR_04;
			return FALSE;
		}
	} // End while(bPaBuf!=0)		
	while(bNeBuf!=0){
		for(i=0,fOneTimes=FALSE;i<3;i++){
			for(j=0,bCheckSum=0;j<bNeBuf+1;j++){
				if(!RxByte()){
					if((j>=1)&&
					(aDataBuf[iAddr]==ERR_CS)&&(aDataBuf[iAddr+1]==~ERR_CS)){
						aDataBuf[iAddr]=0;
						aDataBuf[iAddr+1]=0;
						TxCmd(bLastCmd);
						j=0xff;
						continue;
					}	
					if(fOneTimes){
						DelaySecond(2);
						return FALSE;				
					}				
					else{
						fOneTimes=TRUE;
						j=0xff;
						continue;
					}
				}
				if(j<bNeBuf){
					aDataBuf[iAddr+j]=bRecSBUF;	
					bCheckSum+=bRecSBUF;
				}
			} // End for(j...)
			if(bCheckSum!=bRecSBUF){				//若校驗和不正確,重新發送數據
				TxCmd(ERR_CS);	
				continue;
			}
			return TRUE;
		} // End for(i...)
		DelaySecond(2);
		bErrorCode=ERR_04;
		return FALSE;
	} // End while(bNeBuf!=0)	
	return TRUE;
}	
// End function: RxData()	

/******************************************************************
 *
 *		函	數: TxData()			
 *		功	能: 從CBUS口發送由bPaBuf,bNeBuf指定的數據
 *				數據被順序緩沖在aDataBuf[]中
 *				包函發送數據和接收應答
 *
 ******************************************************************/
bool TxData(void)
{
	byte i,j,bCheckSum;
	uint iAddr;
	iAddr=0;
	while(bPaBuf!=0){
		for(i=0;i<3;i++){
			for(j=0,bCheckSum=0;j<128;j++){
				if(!TxByte(aDataBuf[iAddr+j]))
					return FALSE;
				bCheckSum+=aDataBuf[iAddr+j];
			}
			TxByte(bCheckSum);
			if(!RxCmd())
				continue;
			if(bRecSBUF==OK)
				break;
			else if(bRecSBUF!=ERR_CS)
				break;
		}

		if((bRecSBUF!=OK)||(i==3)){
			bErrorCode=ERR_04;
			return FALSE;
		}	 
		 
		--bPaBuf;
		iAddr+=128;
		FlashComm();
	} // End while(bPaBuf!=0)
	while(bNeBuf!=0){
		for(i=0;i<3;i++){
			for(j=0,bCheckSum=0;j<bNeBuf;j++){
				if(!TxByte(aDataBuf[iAddr+j]))
					return FALSE;
				bCheckSum+=aDataBuf[iAddr+j];
			}
			TxByte(bCheckSum);
			if(!RxCmd())
				continue;
			if(bRecSBUF==OK)
				break;
			else if(bRecSBUF!=ERR_CS)
				break;
		}
		if((i==3)||(bRecSBUF!=OK)){
			bErrorCode=ERR_04;
			return FALSE;
		} 
		break;
	}
	return TRUE;
}
// End function: TxData()

/**********************************************************************
 *
 *		函數名:	WriteData()
 *		功	能:	將DataBuf中指定長度的數據寫入FLASH或RTC_RAM存儲器中
 *					FLASH的寫入過程在DlpTime0中斷中進行
 *		入口參數:	bPage:欲寫入的頁面	
 *					tAddr:欲寫入的目標地址
 *					bLen: 欲寫入數據的長度(1-256)
 *		全局變量:	fWriteFlashRequest: 寫入FLASH請求標志
 *					bWriteFlashPage:	欲寫入的頁面
 *					tWriteFlashAddr: 	欲寫入的目標地址
 *					sWriteFlashBuf[256]:欲寫入FLASH數據緩沖區					
 *					bWriteFlashLen: 欲寫入數據的長度(1-256)
 *		注	意:		在有嚴格時間要求的過程中不能調用本函數,執行時間約30MS
 *
 **********************************************************************/
// 暫按128字節頁面(SST29EE010/SST29EE020)設計:
void WriteData(byte bPage,uint tAddr,byte bLen,byte*p)
{
	byte i,bTemp;
    byte code *pFrom;
    byte xdata *pTo;
	if(bPage>=4){
		for(i=0;i<bLen;i++){
			bTemp=p[i];
			Page(bPage);
			XBYTE[tAddr+i]=bTemp;
			Page(5);
		}
		return;
	}
	Page(4);								// 拷貝寫FLASH過程到Page4
    for(pFrom=0x2000,pTo=0x2000;pFrom<0x2300;pFrom++,pTo++)
        *pTo=*pFrom;
    Page(5);
	bWriteFlashPage=bPage;					// 設置頁面
	tWriteFlashAddr=tAddr;					// 設置目標地址
	for(i=0;i<bLen;i++,p++)
		sWriteFlashBuf[i]=*p;
	bWriteFlashLen=bLen;				 	// 設置長度
	fWriteFlashRequest=1;					// 開始請求寫入
	while(fWriteFlashRequest) IDLE;			// 等待寫入完成
}
// End function: WriteData()

/******************************************************************
 *
 *		函	數: GeneralWriteData()			
 *		功	能: 向FLASH中寫入由bPaBuf,bNeBuf指定的已收到數據
 *				數據被緩沖在aDataBuf[]中.
 *
 ******************************************************************/
void GeneralWriteData(uint iAddr)
{
	uint i;
	byte bFirst=0;
	byte bSecond=0;
	byte bThree=0;
	if((iAddr&0x007f)==0){
		bSecond=iPaNeNum/128;
		bThree=iPaNeNum%128;
	}	
	else{
		bFirst=(byte)(iAddr&0x00ff);
		if(bFirst<0x80)
			bFirst=0x80-bFirst;
		else
			bFirst=(byte)(0x100-bFirst);
		i=iPaNeNum;
		if(i>bFirst){
			bSecond=(byte)((i-bFirst)/128);
			bThree=(byte)((i-bFirst)%128);
		}
		else
			bFirst=i;					
	}
	i=0;
	while(bFirst!=0){
		WriteData(1,iAddr,bFirst,&aDataBuf[i]);
		iAddr+=bFirst;
		i+=bFirst;
		bFirst=0;
	}
	while(bSecond!=0){
		WriteData(1,iAddr,128,&aDataBuf[i]);
		iAddr+=128;
		i+=128;
		--bSecond;
	}
	while(bThree!=0){
		WriteData(1,iAddr,bThree,&aDataBuf[i]);
		bThree=0;
	}
}
// End function: GeneralWriteData()

/******************************************************************
 *
 *		函	數: GeneralReadData()			
 *		功	能: 從FLASH中讀出由bPaBuf,bNeBuf指定的數據
 *				緩沖到aBuf[]中.
 *
 ******************************************************************/
void GeneralReadData(byte bPage,uint sAddr,uint iLen,byte *aBuf)
{
	byte bTemp;
	uint i;
	for(i=0;i<iLen;i++,sAddr++){
		Page(bPage);
		bTemp=XBYTE[sAddr];
		Page(5);
		aBuf[i]=bTemp;
	}
}
// End function: GeneralReadData()

/******************************************************************
 *
 *		函	數: ReadPara()			
 *		功	能: 從FLASH或RTC_RAM中讀出由bLen指定的數據
 *				緩沖到aBuf[]中.bLen<256.
 *
 ******************************************************************/
void ReadData(byte bPage,uint sAddr,byte bLen,byte *aBuf)
{
	byte i,bTemp;
	for(i=0;i<bLen;i++,sAddr++){
		Page(bPage);
		bTemp=XBYTE[sAddr];
		Page(5);
		aBuf[i]=bTemp;
	}
}
// End function: ReadData()

/******************************************************************
 *
 *	函	數: AutoReadPara()			
 *	功	能: 自動讀參數.根據參數代碼從參數索引表中取出頁面,長度,
 *			和類型,取出參數后自動轉換,用Para類型返回.
 *
 ******************************************************************/
bool AutoReadPara(byte bParaCode)
{
	byte i;
	byte code *Point;
	byte xdata aBuf[6];
	byte xdata aBuf1[10];
	uint iAddr;
	Point=PARA_START;
	while(TRUE){							// 找參數代碼
		if(*Point==bParaCode)
			break;
		Point+=6;			
		if(Point>=PARA_END)
			return FALSE;
	}
	Page(5);
	for(i=0;i<6;i++)
		aBuf[i]=Point[i];
	iAddr=(uint)(aBuf[3]*256)+aBuf[4];
	ReadData(aBuf[5],iAddr,aBuf[1],&aBuf1);	// 讀出參數內容:
	i=aBuf[2]&0x0f;
	switch(i){
		case QUERY_BYTE:					// 字節型可查詢參數
		case QUERY_BIT:						// 位尋址可查詢參數
			bParaByte=aBuf1[0];
			break;
			
		case QUERY_HEX:
		case QUERY_BCD:						// 壓縮BCD可查詢參數
			memcpy(&aParaBuf,&aBuf1,aBuf[1]);	
			if(aBuf[1]==1)	
				bParaByte=aBuf1[0];
			break;
					
		case QUERY_INT:						// 整型可查詢參數
			iParaWord=(uint)(aBuf1[0]*256)+aBuf1[1];
			break;
			
		case QUERY_LONG:					// 長整型可查詢參數
			lParaLWord=(ulint)(aBuf1[0]*65536)+(ulint)(aBuf1[1]*256)+aBuf1[2];
			break;
			
		default:
			return FALSE;
	}
	return TRUE;
}
// End function: AutoReadPara()

/******************************************************************
 *
 *
 *		函	數: AutoWritePara()			
 *		功	能: 自動寫參數.根據參數代碼從參數索引表中取出頁面,長度,
 *				和類型,將bParaByte等相應的值存入FLASH.
 *
 *
 ******************************************************************/
bool AutoWritePara(byte bParaCode)
{
	byte i;
	byte xdata aBuf[6];
	byte xdata aBuf1[10];
	uint iAddr;
	byte code *Point;
	Point=PARA_START;
	while(TRUE){
		if(bParaCode==*Point)
			break;
		Point+=6;
		if(Point>PARA_END)
			return FALSE;
	}
	for(i=0;i<6;i++,Point++)
		aBuf[i]=*Point;
	iAddr=(uint)(aBuf[3]*256)+aBuf[4];	// 計算目標地址
	i=aBuf[2]&0x0f;
	switch(i){
		case QUERY_BYTE:				// 字節型可查詢參數
		case QUERY_BIT:					// 位尋址可查詢參數
			aBuf1[0]=bParaByte;
			break;
		
		case QUERY_HEX:
		case QUERY_BCD:					// 壓縮BCD可查詢參數
			memcpy(&aBuf1,&aParaBuf,aBuf[1]);
			if(aBuf[1]==1)
				aBuf1[0]=bParaByte;
			break;
		
		case QUERY_INT:					// 整型可查詢參數
			aBuf1[0]=(byte)(iParaWord/256);
			aBuf1[1]=(byte)(iParaWord%256);
			break;
			
		case QUERY_LONG:				// 長整型可查詢參數
			aBuf1[0]=(byte)((lParaLWord>>16)&0xff);
			aBuf1[1]=(byte)((lParaLWord>>8)&0xff);
			aBuf1[2]=(byte)(lParaLWord&0xff);
			break;
			
		default:
			return FALSE;
	}
	WriteData(aBuf[5],iAddr,aBuf[1],&aBuf1);
	return TRUE;
}
// End function: AutoWritePara()
//
// End file: jbData.c
//

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女视频在线观看| 国产91精品欧美| 国产精品久久久久久久久久久免费看| 成人免费观看男女羞羞视频| 成人高清av在线| 成人精品亚洲人成在线| 顶级嫩模精品视频在线看| 国产在线观看一区二区| 狠狠色狠狠色合久久伊人| 日日摸夜夜添夜夜添精品视频| 国产精品免费久久久久| 国产精品青草久久| 亚洲视频免费在线| 亚洲欧美激情插| 一区二区三区四区亚洲| 日韩精品欧美精品| 国产一区二区在线电影| 成人国产视频在线观看| 在线亚洲欧美专区二区| 欧美日韩国产综合久久 | 中文字幕一区二区三区在线不卡 | 欧美精品一区二区三区久久久| 精品美女被调教视频大全网站| 2021国产精品久久精品| 国产精品久久久久久久岛一牛影视 | 国产精品一区二区在线观看网站 | 欧美色窝79yyyycom| 日韩一级在线观看| 国产精品色哟哟网站| 综合久久久久久| 午夜视频在线观看一区二区 | 一个色妞综合视频在线观看| 天堂一区二区在线| 麻豆精品一区二区| 99re这里只有精品视频首页| 欧美理论电影在线| 国产精品少妇自拍| 午夜电影网一区| 成人精品视频一区二区三区尤物| 91麻豆成人久久精品二区三区| 欧美人与z0zoxxxx视频| 中文字幕免费不卡在线| 日韩1区2区3区| 99精品久久只有精品| 精品国产一区二区亚洲人成毛片| 亚洲乱码国产乱码精品精98午夜| 激情欧美一区二区| 欧美日韩国产美女| 日韩毛片一二三区| 国产乱淫av一区二区三区| 欧美色综合影院| 国产精品久久久久久久久搜平片 | 亚洲色图视频免费播放| 国内精品免费在线观看| 欧美日韩精品一区二区三区四区| 国产精品传媒在线| 国产一区二区成人久久免费影院| 欧美日韩高清一区二区| 亚洲乱码国产乱码精品精的特点 | 美女视频一区二区三区| 欧美日韩综合色| 亚洲国产成人在线| 国产福利精品导航| 精品久久人人做人人爽| 琪琪一区二区三区| 欧美日韩精品电影| 亚洲一区二区欧美日韩| 色婷婷综合久色| 亚洲欧美另类小说视频| 91在线观看视频| 亚洲欧美偷拍三级| 一本大道久久精品懂色aⅴ| 中文字幕视频一区二区三区久| 国产成人综合亚洲网站| 欧美激情综合在线| 国产福利视频一区二区三区| 久久亚洲精品国产精品紫薇| 久久国产精品无码网站| 精品国产髙清在线看国产毛片| 免费的成人av| 精品国产乱码久久久久久久久 | 韩国女主播成人在线| 精品国产乱码久久久久久老虎 | 亚洲国产另类av| 欧美日韩高清一区二区| 奇米精品一区二区三区在线观看一| 欧美一区中文字幕| 国产美女精品一区二区三区| 国产亚洲欧美在线| av成人免费在线观看| 亚洲综合小说图片| 制服丝袜中文字幕亚洲| 日本亚洲视频在线| 久久久五月婷婷| 波多野结衣一区二区三区 | 精品欧美一区二区久久| 国产成人亚洲综合a∨婷婷图片| 久久精品人人做| 色综合久久88色综合天天 | 中文字幕一区二区在线观看| 91成人国产精品| 久久精品国产一区二区三区免费看 | 欧美激情一区二区三区全黄 | 亚洲第一av色| 精品成a人在线观看| caoporn国产精品| 亚洲成av人片一区二区梦乃| 久久免费精品国产久精品久久久久| 福利一区二区在线| 亚洲综合视频在线| 久久久蜜臀国产一区二区| 色婷婷综合五月| 国产精品1区2区3区| 一区二区在线观看免费| 日韩欧美国产wwwww| 99re8在线精品视频免费播放| 日韩精彩视频在线观看| 国产精品久久久久久久久动漫| 欧美电影在哪看比较好| proumb性欧美在线观看| 麻豆91精品91久久久的内涵| 亚洲色图在线看| 2023国产精品| 91麻豆精品国产91久久久 | 日韩欧美国产一二三区| 欧美在线一二三| 成人av资源下载| 国内精品视频666| 日韩精品一级二级| 亚洲色图清纯唯美| 国产拍揄自揄精品视频麻豆| 欧美一级片在线| 欧美综合一区二区| 99久久综合色| 国产成人在线视频播放| 精品一区二区在线播放| 午夜在线成人av| 亚洲男人的天堂一区二区| 国产亚洲精品福利| 久久婷婷成人综合色| 日韩欧美资源站| 欧美丰满一区二区免费视频| 欧美亚洲高清一区二区三区不卡| 成人少妇影院yyyy| 国产盗摄女厕一区二区三区| 久久精品国产一区二区| 美女视频黄久久| 麻豆国产精品视频| 另类小说视频一区二区| 日韩在线观看一区二区| 亚洲福中文字幕伊人影院| 亚洲国产精品久久艾草纯爱| 亚洲男同1069视频| 亚洲成人免费观看| 婷婷成人综合网| 日韩影院免费视频| 美女诱惑一区二区| 日韩成人一级大片| 免费看黄色91| 国产一区二区影院| 精品一区二区三区免费观看| 久久精品国产亚洲5555| 麻豆精品在线看| 国产伦精品一区二区三区免费| 激情久久五月天| 国产电影一区二区三区| 94色蜜桃网一区二区三区| 99精品久久99久久久久| 色吧成人激情小说| 在线成人av网站| 久久先锋资源网| 中文字幕在线一区免费| 亚洲免费av观看| 丝袜亚洲另类欧美| 国产一区二区剧情av在线| 99久久99久久精品免费看蜜桃| 色综合久久久久网| 91精品免费在线| 国产精品成人一区二区三区夜夜夜 | 成人免费在线播放视频| 亚洲不卡av一区二区三区| 精品一区二区三区欧美| 丁香婷婷深情五月亚洲| 色婷婷精品久久二区二区蜜臀av| 欧美日韩中文另类| 久久久久久麻豆| 亚洲一区视频在线| 国产精一区二区三区| 91久久国产最好的精华液| 欧美mv日韩mv| 一区二区三区在线观看欧美| 精品一区二区免费在线观看| 91碰在线视频| 久久免费视频一区| 性做久久久久久久久| 成人国产视频在线观看| 日韩精品一区二区三区视频 | www.日本不卡| 精品久久免费看| 亚洲午夜一区二区三区|