📄 sms.c
字号:
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 + -