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

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

?? atcmdparser.c

?? C語言源代碼及相關資料
?? C
?? 第 1 頁 / 共 3 頁
字號:

//#include "stdafx.h"

#define AMOD_ATCMD_PARSER_H
#include "atcmdParser.h"
#undef AMOD_ATCMD_PARSER_H

int	fun_strcmp( char * p, char * q )
{
	char c = '\0';
	char d = '\0';

	if ( p == 0 ) return -1;
	if ( q == 0 ) return  1;

	do {
		c = ( *p++ );
		d = ( *q++ );

		if ( c < d ) return -1;		//	include c == null char
		if ( c > d ) return  1;		//	include d == null char
	} while  ( c != '\0' || d != '\0' );

	return 0;
}

int	fun_strncmp ( char * p, char * q, int n )
{
	char c = '\0';
	char d = '\0';	

	if ( p == 0 ) return -1;
	if ( q == 0 ) return  1;

	do {
		c = ( *p++ );
		d = ( *q++ );

		if ( c < d ) return -1;		//	include c == null char
		if ( c > d ) return  1;		//	include d == null char

		if ( --n <= 0 ) break;
	} while  ( c != '\0' || d != '\0' );

	return 0;
}

char fun_lowercase ( char c )
{
	if ( 'A' <= c && c <= 'Z' ) return (char)(c - 'A' + 'a');
	return c;
}

int	fun_strcmpnocase ( char * p, char * q )
{
	char c = '\0';
	char d = '\0';

	if ( p == 0 ) return -1;
	if ( q == 0 ) return  1;

	do {
		c = fun_lowercase ( *p++ );
		d = fun_lowercase ( *q++ );

		if ( c < d ) return -1;		//	include c == null char
		if ( c > d ) return  1;		//	include d == null char
	} while  ( c != '\0' || d != '\0' );

	return 0;
}

int	fun_strncmpnocase ( char * p, char * q, int n )
{
	char c = '\0';
	char d = '\0';	

	if ( p == 0 ) return -1;
	if ( q == 0 ) return  1;

	do {
		c = fun_lowercase ( *p++ );
		d = fun_lowercase ( *q++ );

		if ( c < d ) return -1;		//	include c == null char
		if ( c > d ) return  1;		//	include d == null char

		if ( --n <= 0 ) break;
	} while  ( c != '\0' || d != '\0' );

	return 0;
}

unsigned char funPro_RepMS_DataGetField(unsigned char * pData, unsigned char * pField, int nFieldNum, int nMaxFieldLen)
{
	int i = 0;
	int nField = 0;
	int nStrRegState=0;
	int i2 = 0;
	
	//
	// Validate params
	//
	if(pData == 0  || pField == 0 || nMaxFieldLen <= 0)
	{
		return 1;
	}

	//
	// Go to the beginning of the selected field
	//
	while(nField != nFieldNum && pData[i])
	{
		if (pData[i] == '\"') {
			if (nStrRegState==0)
				nStrRegState=1;		// string region start from first  '"'
			else if (nStrRegState==1)
				nStrRegState=0;		// string region end to second  '"'
		} else if(pData[i] == ',') {
			if (nStrRegState==0)	// string region has been close.
				nField++;
		}

		i++;

		if(pData[i] == '\0' )
		{
			pField[0] = '\0';
			return 2;
		}
	}

	if(pData[i] == ',' || pData[i] == '\r' || pData[i] == '\n')
	{
		pField[0] = '\0';
		return 3;
	}

	//
	// copy field from pData to Field
	//
	nStrRegState=0;
	while( (pData[i] != '\r') && (pData[i] != '\n') && pData[i])
	{
		if (pData[i] == '\"') {
			if (nStrRegState==0)
				nStrRegState=1;		// string region start from first  '"'
			else if (nStrRegState==1)
				nStrRegState=0;		// string region end to second  '"'
		} else if(pData[i] == ',') {
			if (nStrRegState==0)	// string region has been close.
				break;
			else {
				pField[i2] = pData[i];
				i2++;
			}
		} else {
			pField[i2] = pData[i];
			i2++;
		}

		i++;

		//
		// check if field is too big to fit on passed parameter. If it is,
		// crop returned field to its max length.
		//
		if(i2 >= nMaxFieldLen)
		{
			i2 = nMaxFieldLen-1;
			break;
		}
	}
	pField[i2] = '\0';

	return 0;
}

unsigned char funPro_RepPlusMS_FINAL_CheckIfEndData(unsigned char nbtData)
{
	int nRtnCheck = 0;
	int nComEndStrLen = 0;
	
	gw_str_CmpEndString[gw_cmpendstr_Index++]=nbtData;
	nComEndStrLen = gw_cmpendstr_Index;
	
	nRtnCheck = fun_strncmp(gw_str_CmpEndString, "\r\n\r\nOK\r\n", nComEndStrLen);
	if ( nRtnCheck==0 ) {
		// end of Tail Data String
		if ( nComEndStrLen==8 ) {
			// End of message, and ready to seatch other response message
			gw_nRCVState_RFPLUS = RCV_STARP_PLUS_EOM;

			// empty end compare string for next time comparsion
			gw_str_CmpEndString[0]='\0';
			gw_cmpendstr_Index=0;
		} // end of if ( nComEndStrLen==8 )
	} else {
		// if compare end string fail, do not continue to compare
		// go to original state to skip unknow sentence
		gw_nRCVState_RFPLUS = RCV_STARP_PLUS_BACK_N_CHAR;		
	} // end of if ( nRtnCheck==0 )

	return 0;
}

// Check if touch end data of this response Plus Command "CMGR".
unsigned char funPro_RepPlusMS_CMGR_CheckIfEndData(unsigned char nbtData)
{
	int nRtnCheck = 0;
	int nComEndStrLen = 0;

	int nContinueCheckIndex=-1;
	int nCheckIndex=1;
	int nMoveCount=0;
	int i=0;
	
	gw_str_CmpEndString[gw_cmpendstr_Index++]=nbtData;
	nComEndStrLen = gw_cmpendstr_Index;
	
	nRtnCheck = fun_strncmp(gw_str_CmpEndString, "\r\n\r\nOK\r\n", nComEndStrLen);
	if ( nRtnCheck==0 ) {
		// end of Tail Data String
		if ( nComEndStrLen==8 ) {
			// End of message, and ready to seatch other response message
			gw_nRCVState_RFPLUS = RCV_STARP_PLUS_EOM;

			// erase end string \r\n\r\nOK\r\n from output data string
			//gw_rpplusms_Index-=8;
			//gw_szRFPLUS_Data[gw_rpplusms_Index]='\0';
			gw_rppluctxsms_Index-=8;
			gw_szRFPLUS_CxtData[gw_rppluctxsms_Index] = '\0';			
			// Output CMGR Data String to TextBox Item..
			// CB: Callback function to process the parameters
		}
	} else {
		// continue to get tail data...
		for ( nCheckIndex=1; nCheckIndex<nComEndStrLen; nCheckIndex++) {
			nRtnCheck = 0;
			nRtnCheck = fun_strncmp(gw_str_CmpEndString+nCheckIndex, "\r\n\r\nOK\r\n", nComEndStrLen-nCheckIndex);
			if ( nRtnCheck==0 ) {
				// Get new match string, continue to match
				// erase nCheckIndex count character from end compare string, move other character to top
				nMoveCount = nComEndStrLen-nCheckIndex;
				for( i=0; i<nMoveCount; i++) {
					gw_str_CmpEndString[i]=gw_str_CmpEndString[nCheckIndex+i];
				}
				nComEndStrLen = nMoveCount;
				gw_str_CmpEndString[nComEndStrLen]='\0';
				gw_cmpendstr_Index = nComEndStrLen;
				nContinueCheckIndex=0;
				break;
			}
		}

		if ( nContinueCheckIndex==-1 ) {
			gw_nRCVState_RFPLUS = RCV_STARP_PLUS_DATA_OTHERS;
			// empty end compare string for next time comparsion
			gw_str_CmpEndString[0]='\0';
			gw_cmpendstr_Index=0;
		} // end of if ( nContinueCheckIndex==-1 )
	} // end of if ( nRtnCheck==0 )

	return 0;
}

// Check if touch end data of this response Plus Command "CMGL"
unsigned char funPro_RepPlusMS_CMGL_CheckIfEndData(unsigned char nbtData)
{
	int nRtnCheck = 0;
	int nComEndStrLen = 0;

	int nContinueCheckIndex=-1;
	int nCheckIndex=1;
	int nMoveCount=0;
	int nAgainEachLineEndCheck=0;
	int i=0;
		
	gw_str_CmpEndString[gw_cmpendstr_Index++]=nbtData;
	nComEndStrLen = gw_cmpendstr_Index;
	
	nRtnCheck = fun_strncmp(gw_str_CmpEndString, "\r\n\r\nOK\r\n", nComEndStrLen);
	if ( nRtnCheck==0 ) {
		// end of Tail Data String
		if ( nComEndStrLen==8 ) {
			// End of message, and ready to seatch other response message
			gw_nRCVState_RFPLUS = RCV_STARP_PLUS_EOM;
			
			// erase end string \r\n\r\nOK\r\n from output data string
			//gw_rpplusms_Index-=8;
			//gw_szRFPLUS_Data[gw_rpplusms_Index]='\0'
			gw_rppluctxsms_Index -= 8;
			gw_szRFPLUS_CxtData[gw_rppluctxsms_Index] = '\0';
			// Output CMGL Data String to ListView..
			// CB: Callback function to process the parameters
			// gw_rpplusms_Index=0;
		}
	} else {
		// compare fail, and not match end string, therefore skip first bytes,
		// and then continue to compare edn string or cmgl new string from second bytes position
		// continue to get tail data...
		
		// If not end string, therefore first check if the string ia matched with +cmgl string.
		if ( nComEndStrLen>=3 ) {
			int nEachLineEndCheck=0;
			nEachLineEndCheck = fun_strncmp(gw_str_CmpEndString+2, "+CMGL:", nComEndStrLen-2);
			if ( nEachLineEndCheck==0 ) {
				// we may get next CMGL message, and try to make sure that then go to process again CMGL message.
				if ( nComEndStrLen==8 ) {
					// Go to process next CMGL message, and 
					// notice that the current message content have to be processed.
					gw_nRCVState_RFPLUS = RCV_STARP_PLUS_POM; // one part of message

					// erase end string \r\n\r\nOK\r\n from output data string
					//gw_rpplusms_Index-=8;
					//gw_szRFPLUS_Data[gw_rpplusms_Index]='\0';
					gw_rppluctxsms_Index -= 8;
					gw_szRFPLUS_CxtData[gw_rppluctxsms_Index] = '\0';
					// Output CMGL Data String to ListView..
					// CB: Callback function to process the parameters
					// gw_rpplusms_Index=0;
				} // end of if ( nComEndStrLen==8 )
				return 0;
			} // end of if ( nEachLineEndCheck==0 )
		} // end of if ( nComEndStrLen>=3 )

		// start to compare from second byte 
		for ( nCheckIndex=1; nCheckIndex<nComEndStrLen; nCheckIndex++) {
			nRtnCheck = 0;
			nRtnCheck = fun_strncmp(gw_str_CmpEndString+nCheckIndex, "\r\n\r\nOK\r\n", nComEndStrLen-nCheckIndex);							
			if ( nRtnCheck==0 ) {
				// Get new match string, continue to match
				nMoveCount = nComEndStrLen-nCheckIndex;
				for( i=0; i<nMoveCount; i++) {
					gw_str_CmpEndString[i]=gw_str_CmpEndString[nCheckIndex+i];
				}
				nComEndStrLen = nMoveCount;
				gw_str_CmpEndString[nComEndStrLen]='\0';
				gw_cmpendstr_Index = nComEndStrLen;

				nContinueCheckIndex=0;
				break;
			} else {
				if ( (nComEndStrLen-nCheckIndex) >= 3 ) {
					nAgainEachLineEndCheck=0;
					nAgainEachLineEndCheck = fun_strncmp(gw_str_CmpEndString+nCheckIndex+2, "+CMGL:", (nComEndStrLen-nCheckIndex)-2);
					if ( nAgainEachLineEndCheck==0 ) {
						// Again, we may get next CMGL message, and try to make sure that then go to process again CMGL message.
						if ( (nComEndStrLen-nCheckIndex)==8 ) {
							// Go to process next CMGL message, and 
							// notice that the current message content have to be processed.
							gw_nRCVState_RFPLUS = RCV_STARP_PLUS_POM; // one part of message

							// erase end string \r\n\r\nOK\r\n from output data string
							//gw_rpplusms_Index-=8;
							//gw_szRFPLUS_Data[gw_rpplusms_Index]='\0';
							gw_rppluctxsms_Index -= 8;
							gw_szRFPLUS_CxtData[gw_rppluctxsms_Index] = '\0';
							// Output CMGL Data String to ListView..

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性色生活片| 夜夜夜精品看看| 亚洲欧美日韩国产另类专区| 悠悠色在线精品| 日韩国产欧美在线观看| 国产高清一区日本| 99免费精品视频| 欧美日韩国产精品自在自线| 精品精品欲导航| 亚洲色图在线播放| 日韩精品免费视频人成| 粉嫩绯色av一区二区在线观看| 色婷婷综合久久久久中文一区二区| 91精品婷婷国产综合久久性色| 欧美国产日韩在线观看| 午夜亚洲国产au精品一区二区| 久久99精品国产| 一本色道**综合亚洲精品蜜桃冫 | 国产日韩精品一区二区三区在线| 亚洲男女毛片无遮挡| 美脚の诱脚舐め脚责91| 91美女片黄在线观看91美女| 欧美videos大乳护士334| 亚洲欧美一区二区在线观看| 婷婷国产在线综合| 成人h动漫精品一区二区| 欧美日韩国产小视频在线观看| 久久精品人人爽人人爽| 亚洲国产精品一区二区久久恐怖片| 国内一区二区在线| 欧美人伦禁忌dvd放荡欲情| 国产精品三级av在线播放| 日韩中文字幕麻豆| 91在线丨porny丨国产| 精品日韩一区二区三区免费视频| 亚洲另类中文字| 国产91精品欧美| 日韩三级.com| 亚洲一区二区三区四区五区黄 | 国产欧美一区视频| 日韩主播视频在线| 一本色道a无线码一区v| 国产欧美精品日韩区二区麻豆天美| 日韩电影在线观看网站| 91高清视频免费看| 国产精品嫩草久久久久| 狠狠色丁香久久婷婷综| 欧美日韩国产系列| 亚洲精品中文在线观看| 成人爽a毛片一区二区免费| 欧美va日韩va| 日本美女视频一区二区| 欧美色网站导航| 亚洲人精品一区| 成人av免费在线观看| 久久久久久免费毛片精品| 日本伊人色综合网| 欧美久久久久久久久中文字幕| 亚洲色图欧美在线| av不卡在线观看| 欧美国产日韩亚洲一区| 国产精品一级片在线观看| 欧美成人vr18sexvr| 日本不卡在线视频| 欧美精品精品一区| 午夜视频在线观看一区二区| 欧美少妇一区二区| 亚洲在线视频网站| 欧美午夜理伦三级在线观看| 亚洲精品乱码久久久久久日本蜜臀| 国产99一区视频免费| 久久久不卡网国产精品二区| 国产一区二区三区免费播放| 精品国产乱子伦一区| 久久国产精品色| 欧美成人综合网站| 久久99国内精品| 亚洲精品一区二区三区99| 老司机精品视频一区二区三区| 日韩一区二区三区电影| 免费在线看一区| 精品对白一区国产伦| 国产二区国产一区在线观看| 欧美国产禁国产网站cc| av午夜一区麻豆| 亚洲美女淫视频| 欧美中文字幕亚洲一区二区va在线 | 亚洲一区二区三区国产| 欧美亚洲一区二区在线| 日韩av在线发布| 欧美精品一区二区三区蜜臀 | 一色桃子久久精品亚洲| 91免费国产在线观看| 一区二区三区色| 欧美丰满高潮xxxx喷水动漫| 精品一区二区影视| 欧美经典一区二区| 色婷婷精品久久二区二区蜜臂av | 99久久婷婷国产| 亚洲激情av在线| 在线观看日韩电影| 日本中文一区二区三区| 久久久777精品电影网影网 | 亚洲精选视频在线| 欧美日韩国产成人在线91| 美脚の诱脚舐め脚责91| 国产欧美精品区一区二区三区 | 亚洲精品视频在线观看网站| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 亚洲在线视频网站| 精品国一区二区三区| 99热这里都是精品| 亚洲一区二区三区三| 精品精品欲导航| 99久久综合精品| 日韩国产一区二| 国产精品天美传媒沈樵| 欧美精选午夜久久久乱码6080| 九九**精品视频免费播放| 国产精品国产三级国产普通话蜜臀| 91极品视觉盛宴| 精品综合久久久久久8888| 中文字幕视频一区| 日韩精品一区二区三区视频在线观看 | 欧美视频完全免费看| 国产一区二区成人久久免费影院| 亚洲欧洲精品成人久久奇米网| 欧美视频一区二区三区在线观看| 国产麻豆9l精品三级站| 一区二区激情小说| 久久精品一区二区三区四区| 色婷婷激情综合| 国产精品性做久久久久久| 亚洲一区二区三区自拍| 国产欧美精品国产国产专区| 欧美美女喷水视频| av综合在线播放| 激情综合五月婷婷| 亚洲综合在线电影| 精品国产一区二区三区四区四| 色诱视频网站一区| 国产精品一区二区三区99| 成人在线综合网| 亚洲bt欧美bt精品| 中文字幕亚洲一区二区va在线| 精品剧情在线观看| 在线观看日产精品| 不卡大黄网站免费看| 激情五月播播久久久精品| 亚洲bt欧美bt精品| 18成人在线视频| 久久精品视频网| 精品日本一线二线三线不卡| 欧美吻胸吃奶大尺度电影 | 1000部国产精品成人观看| 日韩精品一区二区三区在线观看| 欧美亚洲愉拍一区二区| 99精品视频在线播放观看| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲成年人影院| 欧美激情中文字幕一区二区| 欧美大片国产精品| 欧美精品18+| 欧美亚洲自拍偷拍| 色屁屁一区二区| 成人av在线观| 国产不卡在线一区| 国产精品中文字幕欧美| 久久99久久久久| 三级亚洲高清视频| 亚洲国产aⅴ天堂久久| 亚洲精品美国一| 亚洲欧美日韩在线| 国产精品人成在线观看免费 | jiyouzz国产精品久久| 国产精品综合网| 国精产品一区一区三区mba桃花| 蜜桃av一区二区| 奇米精品一区二区三区在线观看一| 亚洲午夜精品久久久久久久久| 一区二区三区四区不卡在线 | 欧美丝袜第三区| 91成人国产精品| 欧美怡红院视频| 欧美日韩高清一区二区三区| 欧美在线观看一区| 欧美三级三级三级爽爽爽| 欧美日韩精品免费| 欧美人妖巨大在线| 91精品国产麻豆国产自产在线| 欧美一区欧美二区| 日韩一级视频免费观看在线| 日韩一区二区三区av| 亚洲精品在线网站| 欧美精品一区二区久久婷婷| 亚洲精品一区在线观看| 国产日韩欧美精品综合| ...av二区三区久久精品| 亚洲九九爱视频| 亚洲国产日日夜夜|