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

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

?? sms.c

?? TC35通過text模式發送短信的C語言單片機程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************
文件名:			sms.c
內容:			短消息程序
作者:			Bob Lee
創建日期:		2005-9-7
修改日期:		2005-9-7
版本:			1.00.000
*******************************************************************/
#include "sms.h"

/*------------------------------------------------------------------
名稱:			ATCheck
作用:			向串口發送AT 指令后,檢查其返回值 來確定 指令是否操作成功
輸入:			TimeOut		->	超時時間
				ResultStr	->	期望字符
				CheckOK		->	是否有OK返回false/true
輸出:			=0 正確
				=1 超時錯誤
				=2 返回錯誤
修改原因:
修改內容:
創建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
uchar ATCheck( uchar TimeOut,char* ResultStr,uchar CheckOK )
{

	unsigned char data i,res = 0x01,Flag = 0x00;
		
	for( i = 0x00; i < 0xff; i ++ ) ReturnBuffer[ i ] = 0x00;i = 0x00;
															//清接收數據緩沖區
	SecondRegister = TimeOut;Flag_1s = false;				//清定時器
	while( !Flag_1s )
	{
		ClearWDT( );

		ReturnBuffer[ i ] = ATReceive( );					//讀取數據

#ifdef HARDDEBUG
	DSend( &ReturnBuffer[ i ] );
#endif

		if( !ReturnBuffer[ i ] ) continue;
		i ++;

		if( strstr( (char *)ReturnBuffer, "CMTI:") )
		{
			Flag_Hour = true;
			if( CheckOK == CHECKNEW ) return 0x00;
		}
															//有新短信
		if( strstr( (char *)ReturnBuffer, "ERROR\r\n") ){res = 0x02;break;}
															//判斷是否為ERROR
		if( CheckOK )
		{
			if( strstr( (char *)ReturnBuffer, "OK\r\n" ) )
			{												//返回數據中有錯誤提示
				res = 0x00;
				if( ResultStr!= NULL )						//OK接收正確
				{
					if( !strstr( (char *)ReturnBuffer, ResultStr ) ) res = 0x03;
				}
				break;
			}
		}
		else
		{
			res = 0x03;										//Data error
			if( strstr( (char *)ReturnBuffer, ResultStr ) ){ res = 0x00; break; }				
															//Data right
		}

	}
	return res;
}

/*------------------------------------------------------------------
名稱:			SendSMS
作用:			發送一條短信
輸入:			Number -> 電話號碼
				Contect -> 內容
輸出:			=0成功
				>0失敗
創建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
uchar SMSSend( char* Number, char* Content )
{
	char i;

#ifdef HARDDEBUG1
	DSend("\r\n\r\n==================================================\r\n:");
	DSend("電話號碼:");
	DSend(Number);
	DSend("\r\n內容:");
	DSend(Content);
	DSend("\r\n:");
#endif
#ifdef SMSDEBUG
	return 0x00;
#endif

	for( i = 0x00; i < 0x11; i ++ )
	{
		if( Number[ i ] > '9' ) break;
		if( Number[ i ] < '0' ) break;
		pppp[ i ] = Number[ i ];
	}
	pppp[ i ] = 0x00;

	for( i = 0x00; i < 0x10; i ++ )
	{
		sprintf( TempBuffer, "AT+CMGS=\"%s\"\r", pppp );
		ATSend( TempBuffer );										//發送發送短信申請
		if( !ATCheck( MIDDLEWAIT, ">", NOTCHECKOK ) ) break;		//等待>
	}
	if(i > 0x0f){InitializeFlag = true;return 0x01;}

	SMSNumber ++;													//發送短消息條數
	SMSNumber &= 0x7fffffff;
	strcpy( TempBuffer,Content );									//發送短信
	sprintf( TempBuffer,"%s%c",Content,0x1a );
	ATSend( TempBuffer );
	if( ATCheck( LONGWAIT, "", CHECKOK ) ) return 0x01;				//等待OK
	return 0x00;
}                                   

/*------------------------------------------------------------------
名稱:			DowithAT
作用:			接收并處理AT命令
輸入:			=0x00 要求檢查是否有短信
				>0x00 短信數目
輸出:			無
創建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void DowithAT( void )
{
	unsigned int data i, Number, AllNumber;
	unsigned char data j;

	//檢查內存短信數目
	for( i = 0x00;i < 0x10;i ++)
	{
		ATSend( "AT+CPMS?\r" );
		if( !ATCheck( SHORTWAIT, "CPMS: \"SM\",", NOTCHECKOK) ) break;	//+[CPMS: "SM",]0,40
	}

	if( i > 0x0f ) { InitializeFlag = true; return; }					//超時錯誤,請求重新檢測通訊設備

	if( ReceiveBuffer[ ReceiveHead ] == '0' )
	{
		ClearReceiveBuffer( );											//清空接收區
		return;
	}

	//取得短信數目
	if( ATCheck( SHORTWAIT, ",", NOTCHECKOK) ) return;					//+CPMS: "SM",0[,]40
	ReturnBuffer[ strlen( ReturnBuffer ) ] = 0x00;
	Number = atoi( ReturnBuffer );
	if( !Number ) return;
	//取得短信數目
	if( ATCheck( SHORTWAIT, ",", NOTCHECKOK) ) return;					//+CPMS: "SM",0[,]40
	ReturnBuffer[ strlen( ReturnBuffer ) ] = 0x00;
	AllNumber = atoi( ReturnBuffer );									//+CPMS: "SM",0[,]40
	ATCheck( SHORTWAIT, "", CHECKOK);

	ClearReceiveBuffer( );

	//讀所有短信
	for( i = 0x01; i < AllNumber; i ++ )
	{
		if( !Number ) break;											//處理完畢

		sprintf( TempBuffer,"AT+CMGR=%d\r",i );							//要求讀短信
		ATSend( TempBuffer );											

		if( ATCheck( SHORTWAIT,"CMGR:",NOTCHECKOK)) continue;
		j = 1;
		if( ATCheck( SHORTWAIT,"READ\",\"",NOTCHECKOK)) goto NotRightSMS;
		if( ATCheck( SHORTWAIT,",",NOTCHECKOK)) goto NotRightSMS;

		for(j = 0x00;j < 0x11;j ++)
		{
			if( ReturnBuffer[ j ] < '0' ) break;
			if( ReturnBuffer[ j ] > '9' ) break;
			SendPhoneNumber[j] = ReturnBuffer[j];
		}
		SendPhoneNumber[j] = 0x00;

		if( ATCheck( MIDDLEWAIT,"SZ",NOTCHECKOK)) goto NotRightSMS;
		if( ATCheck( MIDDLEWAIT,"",CHECKOK)) goto NotRightSMS;

		j = SMSCheck( );
		switch( j )
		{
			case 0x01:ConfirmSMS( );break;							//確認短信
			case 0x02:AskSetupSMS( );break;							//詢問設置內容短信
			case 0x03:AskDetectSMS( );break;						//詢問監測狀態短信
			case 0x04:SetupSMS( );break;							//設置短信
			case 0x05:ErrorPassword( );break;						//短信密碼錯誤
			case 0x06:ErrorData( );break;							//短信數據錯誤
			default:break;											//無效短信
		}

NotRightSMS:

		Number --;
		sprintf( TempBuffer,"AT+CMGD=%d\r",i );
		ATSend( TempBuffer );											//要求讀短信
		ATCheck( LONGWAIT, "", CHECKOK );	
	
	}
}

/*------------------------------------------------------------------
名稱:			SMSCheck
作用:			判斷短信內容
輸入:			無
輸出:			=0:無效短信
				=1:為確認短信
				=2:詢問設置內容短信
				=3:詢問監測狀態短信
				=4:設置短信
				=5:短信密碼錯誤
				=6:短信數據錯誤
創建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
uchar SMSCheck( void )
{
	char *Station;
	unsigned char data i;
	
	i = 5;																//SZ{(}00{)[}0{]}
	if( ReturnBuffer[0] != '(' ) i --;									//短信為確認短信
	if( ReturnBuffer[1] != '1' ) i --;									//不是有效短信
	if( ReturnBuffer[3] != ')' ) i --;									//不是有效短信
	if( ReturnBuffer[4] != '[' ) i --;									//不是有效短信
	if( ReturnBuffer[6] != ']' ) i --;									//不是有效短信
	if( i == 5 )
	{
		ReturnBuffer[ 0x00 ] = ReturnBuffer[ 2 ];
		ReturnBuffer[ 0x01 ] = ReturnBuffer[ 5 ];
		return 0x01;
	}

	if( ReturnBuffer[0] != '[' ) return 0x00;							//SZ{[}000000](00)<00...00>(00)<00...00>
	if( ReturnBuffer[7] != ']' ) return 0x00;							//SZ[000000{]}(00)<00...00>(00)<00...00>
	if( ReturnBuffer[8] != '(' ) return 0x00;							//SZ{[}000000](00)<00...00>(00)<00...00>
	if( ReturnBuffer[11] != ')' ) return 0x00;							//SZ[000000{]}(00)<00...00>(00)<00...00>

	for( i = 0x00; i < 0x06; i ++ )										//SZ[{000000}](00)<00...00>(00)<00...00>
	{
		if( ReturnBuffer[ i + 1 ] != Password[ i ] )
		{
			strcpy( TempBuffer, &ReturnBuffer[8] );
			return 0x05;		//密碼錯誤
		}
	}
	
	strcpy( ReturnBuffer, &ReturnBuffer[8] );
	strcpy( TempBuffer, ReturnBuffer );

	if( ReturnBuffer[ 0 ] != '(' ) return 0x06;							//SZ[000000]{(}00)<00...00>(00)<00...00>
	if( ReturnBuffer[ 3 ] != ')' ) return 0x06;							//SZ[000000](00{)}<00...00>(00)<00...00>
	if( ReturnBuffer[ 4 ] != '<' ) return 0x06;							//SZ[000000](00){<}00...00>(00)<00...00>
	Station = strstr( ReturnBuffer, ">" );								//SZ[000000](00)<00...00{>}(00)<00...00>
	if( !Station ) return 0x06;

	i = Station - ReturnBuffer;
	strncpy( TempBuffer, ReturnBuffer, i );
	TempBuffer[i] = 0x00;
	strcpy( ReturnBuffer, Station + 1 );
	ReturnBuffer[ i ] = 0x00;
	if( strcmp( TempBuffer, ReturnBuffer ) ) return 0x06;				//SZ[000000]{(00)<00...00>(00)<00...00>}

	switch( ReturnBuffer[ 1 ] )
	{
		case '0':i = 4;break;											//設置參數
		case '8':i = 2;break;											//查詢參數
		case '9':i = 3;break;											//查詢監測狀態
		default:i = 6;break;
	}

	return (i & 0x7f);
}

/*------------------------------------------------------------------
名稱:			ConfirmSMS
作用:			確認短信
輸入:			無
輸出:			無
創建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void ConfirmSMS( void )
{
	if( ReturnBuffer[1] == '1' )
	{
		if(!strcmp(SendPhoneNumber,PhoneNumber))
		{
			strcpy( PasswordCheck, "?????" );
			return;
		}
	}
	if( ReturnBuffer[1] == '2' )
	{
		return;
	}
	
	switch( ReturnBuffer[0] )
	{
		case '1':
			WaitStatus &= 0xfe;
#ifdef HARDDEBUG1
	DSend("Detect OK!!!!\r\n");
#endif
			break;
		case '2':
			WaitStatus &= 0xfd;
			LoginFlag = true;
#ifdef HARDDEBUG1
	DSend("Login OK!!!!\r\n");
#endif
			break;
		case '3':WaitStatus &= 0xfb;break;
		case '4':
#ifdef HARDDEBUG1
	DSend("Power down OK!!!!\r\n");
#endif
			WaitStatus &= 0xf7;
			if( POWERDETECT ) DisableBattery( );						//掉電
			while( true )
			{ 
				if( !POWERDETECT )
				{
					EnableBattery( );
					ClearWDT( );
					break;
				}
			}
			break;
		default:break;
	}
}

/*------------------------------------------------------------------
名稱:			AskSetupSMS
作用:			詢問設置短信
輸入:			無
輸出:			無
創建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void AskSetupSMS( void )
{

	TempBuffer[0x00] = '(';							//(00)<
	TempBuffer[0x01] = '0';
	TempBuffer[0x02] = ReturnBuffer[2];
	TempBuffer[0x03] = ')';
	TempBuffer[0x04] = '<';
	TempBuffer[0x05] = 0x00;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级三级三级| 亚洲一区二区在线免费看| 中文字幕亚洲视频| 蜜臀av性久久久久av蜜臀妖精| 国产成人免费网站| 91精品国产综合久久婷婷香蕉| 中文无字幕一区二区三区| 日韩精品五月天| 日本精品裸体写真集在线观看 | 亚洲图片欧美色图| 成人午夜免费视频| 久久综合九色综合97婷婷| 亚洲国产视频在线| 91视频.com| 亚洲国产激情av| 国产一区福利在线| 日韩精品一区二区三区四区| 亚洲第一激情av| 色综合久久久网| 国产精品国产三级国产aⅴ原创| 精品制服美女久久| 日韩一卡二卡三卡四卡| 午夜久久久久久电影| 欧美最猛性xxxxx直播| 亚洲婷婷国产精品电影人久久| 国产一区91精品张津瑜| 欧美大尺度电影在线| 日韩国产精品久久| 91精品福利在线一区二区三区| 五月天亚洲婷婷| 欧美美女视频在线观看| 肉色丝袜一区二区| 欧美日本国产视频| 蜜臀av一级做a爰片久久| 欧美xxxxx裸体时装秀| 日本欧美久久久久免费播放网| 91精品国产全国免费观看| 日韩电影免费在线看| 日韩一区二区三区视频在线观看| 偷窥国产亚洲免费视频| 在线播放91灌醉迷j高跟美女 | 欧美高清性hdvideosex| 亚洲成人av电影在线| 91精品国产综合久久婷婷香蕉| 人妖欧美一区二区| 欧美sm极限捆绑bd| 国产精品亚洲视频| 中文字幕在线一区二区三区| 色综合天天在线| 日韩成人一区二区| 精品捆绑美女sm三区| 成人免费高清在线观看| 亚洲精品日日夜夜| 日韩一级二级三级| 国产成人在线视频网站| 亚洲久草在线视频| 日韩网站在线看片你懂的| 国产精品123区| 亚洲欧美色图小说| 日韩一区二区在线观看| 成人免费观看av| 日韩有码一区二区三区| 久久精品免视看| 91麻豆国产自产在线观看| 亚洲成人精品在线观看| 久久久久久免费| 在线观看不卡视频| 国产一区二区精品在线观看| 国产精品不卡在线| 7777精品伊人久久久大香线蕉| 国产毛片精品国产一区二区三区| 亚洲人成影院在线观看| 日韩一区二区视频在线观看| 99国产精品久| 久久爱www久久做| 亚洲一区二区欧美激情| 久久久精品天堂| 欧美欧美欧美欧美首页| av电影一区二区| 美女高潮久久久| 亚洲国产另类精品专区| 欧美激情一区二区三区不卡 | 欧美视频在线一区二区三区| 国产综合久久久久久鬼色| 亚洲一区二区三区影院| 久久久精品日韩欧美| 91精品国产色综合久久久蜜香臀| eeuss国产一区二区三区| 精品一区二区在线观看| 亚洲成在人线免费| 亚洲欧美日韩国产一区二区三区| 欧美tickling挠脚心丨vk| 欧美日韩一级大片网址| 91麻豆免费看| 99视频在线观看一区三区| 国精产品一区一区三区mba桃花| 亚洲免费色视频| 国产精品免费av| 国产亚洲精品精华液| 日韩免费观看高清完整版| 精品视频免费在线| 日本韩国精品一区二区在线观看| 国产夫妻精品视频| 国产黄色91视频| 国产一区二区三区免费| 九九在线精品视频| 欧美aⅴ一区二区三区视频| 日韩经典一区二区| 亚洲国产日产av| 亚洲国产综合视频在线观看| 亚洲精品成人在线| 亚洲一区免费视频| 亚洲成人黄色小说| 日韩高清在线一区| 石原莉奈在线亚洲三区| 日韩激情视频网站| 免费看欧美女人艹b| 久久超碰97中文字幕| 精品一区二区av| 国产精品一卡二| 成人亚洲精品久久久久软件| 国产精品资源在线看| 懂色一区二区三区免费观看| 国产精品1024| 色综合激情久久| 欧美日韩一二区| 日韩欧美在线一区二区三区| 欧美sm极限捆绑bd| 日本一区二区动态图| 亚洲精品欧美专区| 日本中文字幕不卡| 国产一区视频网站| 91香蕉视频污在线| 在线免费视频一区二区| 欧美一级免费大片| 久久综合国产精品| 亚洲色图丝袜美腿| 午夜av一区二区三区| 久久国产精品免费| 91污片在线观看| 欧美色区777第一页| 欧美成人午夜电影| 日韩一区在线免费观看| 五月婷婷久久综合| 国产成人在线色| 欧美日韩国产三级| 欧美韩国日本综合| 日韩在线卡一卡二| 国产69精品一区二区亚洲孕妇| 欧美亚洲综合色| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区在线观看网站| 免费在线视频一区| 97国产一区二区| 欧美电影免费观看高清完整版在线观看 | 欧美大白屁股肥臀xxxxxx| 国产欧美一区二区精品秋霞影院 | 亚洲视频免费看| 蜜臀久久99精品久久久久久9| 国产成人亚洲精品青草天美| 一本久道中文字幕精品亚洲嫩| 欧美一区二视频| 亚洲色图都市小说| 精品午夜久久福利影院| 欧美在线观看视频一区二区| 久久青草欧美一区二区三区| 亚洲国产欧美日韩另类综合| 国产做a爰片久久毛片| 欧美精品777| 亚洲精品久久久蜜桃| 国产成人av影院| 欧美一区二区视频网站| 亚洲国产乱码最新视频 | 国产精品77777| 91精品国产综合久久久久久| 成人免费小视频| 国产成人av一区二区三区在线| 日韩欧美一区在线观看| 亚洲国产精品精华液网站| 91天堂素人约啪| 欧美极品美女视频| 国产一区二区h| 精品粉嫩aⅴ一区二区三区四区 | 这里只有精品免费| 亚洲福利视频三区| 在线观看一区日韩| 亚洲婷婷综合久久一本伊一区 | 国产一区二区三区电影在线观看| 欧美欧美欧美欧美首页| 亚洲动漫第一页| 欧美主播一区二区三区| 亚洲影视资源网| 精品视频在线视频| 丝袜国产日韩另类美女| 欧美日韩一区在线| 午夜亚洲国产au精品一区二区 | 99国产精品视频免费观看| 中文字幕一区二区三区乱码在线 | 亚洲精品视频在线| 欧美亚洲国产怡红院影院|