⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sms.c

📁 TC35通过text模式发送短信的C语言单片机程序
💻 C
📖 第 1 页 / 共 2 页
字号:

 	switch( ReturnBuffer[2] )
	{
		case '1':strcat( TempBuffer, Password);break;
		case '2':strcat( TempBuffer, PhoneNumber);break;
		case '3':BitToString( DefaultStatus, TempBuffer, 5 );break;
		case '4':BitToString( WarnStatus, TempBuffer, 5 );break;
		case '5':BitToString( RelayStatus, TempBuffer, 5 );break;
		case '6':
			sprintf( Tem2Buffer, "%.3d", SMSWait );
			Tem2Buffer[3] = 0;
			strcat( TempBuffer, Tem2Buffer);
			break;
		case '7':strcat( TempBuffer, DGPhoneNumber);break;

		case 'D':
			break;
		case 'F':
			break;
		default:return;
	}

	strcat( TempBuffer,">" );
	strcpy( Tem2Buffer,"SZ[" );						//SZ[
	strcat( Tem2Buffer,Password );					//SZ[000000
	Tem2Buffer[9] = ']';							//SZ[000000]
	Tem2Buffer[10] = 0x00;
	strcat( Tem2Buffer,TempBuffer );				//SZ[000000](00)<00...00>
	strcat( Tem2Buffer,TempBuffer );				//SZ[000000](00)<00...00>(00)<00...00>
	SMSSend( SendPhoneNumber,Tem2Buffer );			//发送

}

/*------------------------------------------------------------------
名称:			AskDetectSMS
作用:			询问监测短信
输入:			无
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void AskDetectSMS( void )
{
	switch( ReturnBuffer[2] )
	{
		case '1':SendDetect( SendPhoneNumber );break;
		case 'D':SendSMSNumber( SendPhoneNumber );break;
		case 'E':SendVersion( SendPhoneNumber );break;
		default:break;
	}
}

/*------------------------------------------------------------------
名称:			SetupSMS
作用:			设置
输入:			无
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SetupSMS( void )
{
	switch( TempBuffer[2] )
	{
		case '1':										//设置密码
			strcpy( Password, &TempBuffer[ 0x05 ] );
			strcpy( PasswordCheck, Password );
			ParameterErrorFlag &= 0x3e;
			break;

		case '2':										//设置电话
			strcpy( PhoneNumber, &TempBuffer[ 0x05 ] );
			strcpy( PhoneCheck, PhoneNumber );
			ParameterErrorFlag &= 0x3d;
			break;

		case '3':										//默认状态
			DefaultStatus = StringToBit( TempBuffer, 0x05 );
			DefaultCheck = DefaultStatus;
			ParameterErrorFlag &= 0x3b;
			OLDDETP = DefaultStatus;
			DETP = (P4 ^ 0xff);
			DelightAll();
			break;

		case '4':										//报警状态
			WarnStatus = StringToBit( TempBuffer, 0x05 );
			WarnCheck = WarnStatus;
			ParameterErrorFlag &= 0x37;
			OLDDETP = DefaultStatus;
			DETP = (P4 ^ 0xff);
			DelightAll();
			break;

		case '5':										//继电器控制状态
			RelayStatus = StringToBit( TempBuffer, 0x05 );
			RelayCheck = RelayStatus;
			ParameterErrorFlag &= 0x2f;
			OLDDETP = DefaultStatus;
			DETP = (P4 ^ 0xff);
			DelightAll();
			break;

		case '6':										//短消息等待时间
			SMSWait = atoi( &TempBuffer[ 0x05 ] );
			SMSWaitCheck = SMSWait;
			ParameterErrorFlag &= 0x1f;
			break;

		case '7':										//电工电话
			strcpy( DGPhoneNumber, &TempBuffer[ 0x05 ] );
			strcpy( DGPhoneCheck, DGPhoneNumber );
			ParameterErrorFlag &= 0x3f;
			break;

		case 'D':
			EnableRelay( 0 );							//控制继电器
			Delays(4);
			DisableRelay( 0 );							//控制继电器
			break;

		case 'E':										//复位
			ResetFlag = true;
			break;

		case 'F':										//短消息数目清0
			SMSNumber = 0x00;
			break;

		default: return;
	}

	if( (SMSWait & 0x81) != 0x81 )
	{
		TempBuffer[0x04] = 0x00;
		sprintf( Tem2Buffer,"SZ%s[0]",TempBuffer );
		SMSSend( SendPhoneNumber, Tem2Buffer );
	}

}
/*------------------------------------------------------------------
名称:			ErrorPassword
作用:			密码错误
输入:			无
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void ErrorPassword( void )
{
	TempBuffer[0x4] = 0x00;
	sprintf( Tem2Buffer,"SZ%s[2]",TempBuffer );
	SMSSend( SendPhoneNumber, Tem2Buffer );
}

/*------------------------------------------------------------------
名称:			ErrorPassword
作用:			密码错误
输入:			无
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void ErrorData( void )
{

	TempBuffer[0x4] = 0x00;
	sprintf( Tem2Buffer,"SZ%s[1]",TempBuffer );
	SMSSend( SendPhoneNumber, Tem2Buffer );

}

/*------------------------------------------------------------------
名称:			SendAskSetup
作用:			发送要求设置短信
输入:			pPhoneNumber -> 电话号码
				uchar Status -> 不正常标志
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendAskSetup( char *pPhoneNumber,uchar Status )
{

	BitToString( Status, TempBuffer, 0x00 );
	sprintf( Tem2Buffer, "SZ[%s](1F)<%s>(1F)<%s>", Password, TempBuffer, TempBuffer );
	SMSSend( pPhoneNumber, Tem2Buffer );				//发送

}

/*------------------------------------------------------------------
名称:			SendDetect
作用:			发送监测状态
输入:			pPhoneNumber -> 电话号码
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendDetect( char *pPhoneNumber )
{
	unsigned char c1,c2,c3,ca,cb,i,c;
#ifdef HARDDEBUG1
	char z;
#endif

	strcpy( DGTemp,"WARN:0000000000000000");
	ca = ( DefaultStatus ^ DETP );
	cb = ( DefaultStatus ^ OLDDETP );
	c1 = ( ( ca ^ cb ) & WarnStatus );				//判断需要报警位是否有变化

	c2 = ( ca & WarnStatus );						//判断是否有报警

	for( i = 0x00;i < 0x04; i ++ )					//点灯
	{
		if( c2 & Table38[ i ] )
		{
			LightOther( i + 1 );
#ifdef HARDDEBUG1
		DSend("\r\nLight:");
		z = i + 0x30;
		DSend( &z );
#endif
		}
		else
		{
			DelightOther( i + 1 );
#ifdef HARDDEBUG1
		DSend("\r\nDelight:");
		z = i + 0x30;
		DSend( &z );
#endif
		}
	}

	c2 = ( ca & WarnStatus );						//判断是否有报警
	c3 = ( c2 & RelayStatus );						//判断是否有操作继电器

	for( i = 0x00; i < 0x08; i ++ )
	{
		c = 0x00;
		if( DETP & Table38[ i ] ) c |= 0x01;		//端口状态
		if( c1 & Table38[ i ] ) c |= 0x08;			//状态变化
		if( c2 & Table38[ i ] ){c |= 0x02;DGTemp[ i + 5 ] = '1';}
													//报警
		if( c3 & Table38[ i ] ) c |= 0x04;			//继电器动作
		if( c < 0x0a)								//Number to char
		{
			TempBuffer[ i ] = c + 0x30;
		}
		else
		{
			TempBuffer[ i ] = c + 0x37;
		}
	}
	TempBuffer[ 8 ] = 0x00;

	c &= RelayStatus;

	sprintf( Tem2Buffer, "SZ[%s](11)<%s>(11)<%s>", Password, TempBuffer, TempBuffer );
	SMSSend( pPhoneNumber, Tem2Buffer );					//发送
	if( !(SMSWait & 0x82 ) )
	{
		WaitStatus |= Table38[ 0 ];							//设置等待位
		WaitTime[0] = SMSWait * 2;							//设置等待时间
	}
	else
	{
		WaitStatus &= Tablef38[ 0 ];						//清除等待位
	}
	OLDDETP = DETP;

	SMSSend( DGPhoneNumber, DGTemp );						//发送
}

/*------------------------------------------------------------------
名称:			SendLogin
作用:			发送注册
输入:			pPhoneNumber -> 电话号码
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendLogin( char *pPhoneNumber )
{

	sprintf( Tem2Buffer , "SZ[%s](12)<0>(12)<0>", Password );
	ErrorCode = 0x01;
	SMSSend( pPhoneNumber, Tem2Buffer );			//发送
	WaitStatus |= Table38[ 1 ];					//设置等待位
	WaitTime[1] = SMSWait * 2;					//设置等待时间

}

/*------------------------------------------------------------------
名称:			SendLogout
作用:			发送注销
输入:			pPhoneNumber -> 电话号码
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendLogout( char *pPhoneNumber )
{

	sprintf( Tem2Buffer, "SZ[%s](13)<0>(13)<0>", Password );
	ErrorCode = 0x02;
	SMSSend( pPhoneNumber, Tem2Buffer );			//发送
	WaitStatus &= Tablef38[ 2 ];					//清除等待位
}

/*------------------------------------------------------------------
名称:			SendPowerDown
作用:			发送注销
输入:			pPhoneNumber -> 电话号码
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendPowerDown( char *pPhoneNumber )
{

	sprintf( Tem2Buffer, "SZ[%s](14)<0>(14)<0>", Password );
	ErrorCode = 0x03;
	SMSSend( pPhoneNumber, Tem2Buffer );			//发送
	WaitStatus |= Table38[3];					//设置等待位
	WaitTime[1] = SMSWait * 2;					//设置等待时间

}

/*------------------------------------------------------------------
名称:			SendVersion
作用:			发送版本号
输入:			pPhoneNumber -> 电话号码
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendVersion( char *pPhoneNumber )
{

	sprintf( Tem2Buffer, "SZ[%s](1E)<%s>(1E)<%s>", Password, VERSION, VERSION );
	ErrorCode = 0x03;
	SMSSend( pPhoneNumber, Tem2Buffer );			//发送

}

/*------------------------------------------------------------------
名称:			SendSMSNumber
作用:			发送版本号
输入:			pPhoneNumber -> 电话号码
输出:			无
创建日期:		2005-8-26
修改日期:		2005-8-26
------------------------------------------------------------------*/
void SendSMSNumber( char *pPhoneNumber )
{

	sprintf( Tem2Buffer, "SZ[%s](1D)<%.4d>(1D)<%.4d>", Password, SMSNumber, SMSNumber );
	ErrorCode = 0x03;
	SMSSend( pPhoneNumber, Tem2Buffer );			//发送

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -