亚洲欧美第一页_禁久久精品乱码_粉嫩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性久久久久蜜臀aⅴ四虎| 国产免费成人在线视频| 亚洲最大的成人av| 在线这里只有精品| 亚洲电影中文字幕在线观看| 欧美日韩国产一区| 美腿丝袜亚洲色图| 久久久综合九色合综国产精品| 国产精品一级二级三级| 蜜桃一区二区三区四区| 欧美精品一区二区三区四区| 国产精品88av| 一区二区三区在线视频观看| 7777女厕盗摄久久久| 久久成人免费电影| 国产精品久久久久永久免费观看 | 91精品欧美福利在线观看| 日韩av电影免费观看高清完整版| 日韩精品中文字幕在线不卡尤物| 国产一区二区三区不卡在线观看| 国产精品白丝在线| 欧美剧在线免费观看网站| 国产乱码精品一区二区三| 亚洲日本护士毛茸茸| 欧美色爱综合网| 国产精华液一区二区三区| 亚洲永久精品大片| 26uuu久久综合| 色老汉一区二区三区| 日本aⅴ精品一区二区三区 | 精品一区二区三区香蕉蜜桃| 亚洲国产精品成人久久综合一区| 欧美在线不卡一区| 理论电影国产精品| 免费成人小视频| 成人国产精品免费网站| 日韩欧美国产麻豆| 久久精品国产精品亚洲红杏| 国产精品家庭影院| 日韩美女在线视频| 日本道免费精品一区二区三区| 国产一区二区三区在线观看精品| 午夜精品一区二区三区免费视频| 国产日韩一级二级三级| 欧美福利视频导航| 在线视频一区二区三| 成人av资源网站| 激情综合色播激情啊| 五月婷婷综合网| 亚洲欧美成人一区二区三区| 久久久精品综合| 日韩免费电影一区| 欧美久久久影院| 欧美中文字幕一区| 92国产精品观看| 成人av在线播放网址| 激情五月婷婷综合| 美女免费视频一区| 丝袜国产日韩另类美女| 亚洲成人动漫av| 亚洲尤物在线视频观看| 亚洲特级片在线| 国产欧美日韩三级| 久久天天做天天爱综合色| 日韩欧美国产一区二区三区| 欧美一卡在线观看| 91精品国产手机| 7777精品伊人久久久大香线蕉的| 在线观看视频一区二区欧美日韩| 99久久伊人网影院| 不卡av免费在线观看| 成人h精品动漫一区二区三区| 国产成人午夜片在线观看高清观看| 久久精工是国产品牌吗| 日韩电影在线免费看| 婷婷综合五月天| 亚洲成人动漫av| 日产精品久久久久久久性色| 日本不卡在线视频| 美女国产一区二区三区| 蜜桃一区二区三区四区| 国内精品国产成人| 国产成人综合在线| 成人黄色片在线观看| 色悠悠亚洲一区二区| 在线观看一区二区视频| 欧美写真视频网站| 日韩免费性生活视频播放| 精品国产免费人成电影在线观看四季 | 播五月开心婷婷综合| 国产精品久久久久久久久搜平片| 日韩av不卡在线观看| 3d动漫精品啪啪1区2区免费| 人人狠狠综合久久亚洲| 日韩视频在线永久播放| 91精品国产综合久久久蜜臀粉嫩| youjizz久久| 国产日韩欧美精品综合| 蜜臀久久99精品久久久久宅男| 精品国产区一区| 亚洲精品中文在线观看| 欧美日韩综合在线免费观看| 天天综合色天天| 欧美性三三影院| 欧美精品在线观看播放| 91啪在线观看| 视频一区视频二区在线观看| 日韩av午夜在线观看| 欧美精品一区二区三区在线| 国产激情一区二区三区| 99r国产精品| 一区二区三区欧美在线观看| 成人精品视频.| 91精品国产一区二区三区| 欧美日韩国产一级| 成人免费视频网站在线观看| 成人黄色电影在线| 欧美一区二区私人影院日本| 欧美精品乱码久久久久久| 亚洲综合丝袜美腿| 韩国毛片一区二区三区| 久久综合色之久久综合| 99久久99久久综合| 色老汉av一区二区三区| 午夜激情综合网| 国产成人亚洲综合色影视| 精品污污网站免费看| 亚洲欧美日韩系列| 国产精品视频你懂的| 国产酒店精品激情| 欧美色综合网站| 在线视频观看一区| 午夜精品久久久久久久久久久| 91视频在线观看免费| av不卡一区二区三区| 精品日韩一区二区三区| 精品国产青草久久久久福利| 日韩专区欧美专区| 国产.欧美.日韩| 狠狠色伊人亚洲综合成人| 久久精品国产一区二区三区免费看 | 国产亚洲1区2区3区| 亚洲成年人网站在线观看| 成人黄色小视频在线观看| 5566中文字幕一区二区电影 | 久久久久九九视频| 91黄色激情网站| 蜜臀久久99精品久久久画质超高清 | 亚洲精品一线二线三线无人区| 亚洲人成网站精品片在线观看 | 日韩精品一区二区三区在线观看 | 欧美日韩在线播| 免费人成网站在线观看欧美高清| 91色|porny| 激情深爱一区二区| 欧洲激情一区二区| 欧美变态凌虐bdsm| 日本一区二区三区在线观看| 精品一区二区免费| 久久女同精品一区二区| 亚洲国产日韩综合久久精品| 亚洲日本在线天堂| 国产成人在线电影| 精品国产成人系列| 欧美伊人久久久久久午夜久久久久| 最新久久zyz资源站| 91视频国产资源| 日本午夜精品视频在线观看| 粉嫩aⅴ一区二区三区四区| 亚洲第一二三四区| 日韩你懂的在线观看| 亚洲色图视频网站| 国产在线一区二区| 免费看日韩精品| 免费看黄色91| 精品一区二区三区免费| 99久久精品国产观看| 蜜臀av性久久久久蜜臀aⅴ| 日韩成人免费在线| 欧洲日韩一区二区三区| 国产欧美日韩综合| 91丨porny丨中文| 亚洲成年人网站在线观看| 亚洲欧美aⅴ...| 亚洲综合久久久| 99视频有精品| 91麻豆精品国产| 亚洲三级小视频| 日韩天堂在线观看| 久久久不卡影院| 美腿丝袜在线亚洲一区| 国产传媒久久文化传媒| 欧美精品一区二区三区视频| 欧美日韩精品免费| 精品久久久久久久久久久院品网 | 97se亚洲国产综合自在线| 一区二区欧美精品| 91在线观看美女| 国产91丝袜在线播放0| 欧美日韩黄视频|