📄 sms_ring.cpp
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright (C), 2005, TopBond Tech. Co., Ltd.
* File name: SMS_RING.CPP
* Module name: 收短信以及检查震铃系列函数的模块
* Author/Date: WuHuan 06/02/14
* Version: Ver 1.0
* Description: 收短信以及检查震铃系列函数的.CPP文件
* Others: 如有改动,请在下面的历史记录登记,谢谢合作!
------------------History-----------------------------
* Modifier/Date: //修订人及修订日期
* Modify Reason: //修订原因
* Modification: //修订的内容和位置的简要说明
------------------------------------------------------
* Modifier/Date: //修订人及修订日期
* Modify Reason: //修订原因
* Modification: //修订的内容和位置的简要说明
------------------------------------------------------
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#include <stdlib.h>
#include <dir.h>
#include "rs232x3.h"
#include "sms.h"
#include "sms_ring.h"
#include "tcpclnt.h"
#include "keymenu.h"
/***************************************************************
SMSRingFlg = 0: SMS state; =1: Ring state;在MAIN.CPP中定义;
让ETR232I模块在接收短信和检查震铃两种状态间切换
***************************************************************/
extern int SMSRingFlg ;
extern struct SERVER_ID Svr_ID;
extern unsigned long StartTickNum;
int RcvSMS( )
{
int i, i1,i2 ;
static RcvSMS_State State_of_RcvSMS = SMS_CheckSMS; //定义描述SMS()函数状态的全局变量
static int Num_of_SMS = 0; //接收到的短信数目
static int count_of_SMS = 0; //短信计数
static struct RcvSMSInfo Info[10];
char TxBuf[256]; //chang TxBuf[1500] to TxBuf[256]
char ruler[10]="hello"; //固定短信激活的参照字符串
switch(State_of_RcvSMS)
{
case SMS_CheckSMS:
i1 = CheckSMS( Info );
if( i1>0 )
{
State_of_RcvSMS = SMS_ReceiveSMS;
Num_of_SMS = i1;
}
break;
case SMS_ReceiveSMS:
for( ;count_of_SMS < Num_of_SMS; )
{
i2 = ReceiveSMS( TxBuf, Info[count_of_SMS].Index );
if( i2>0 )
{
count_of_SMS++;
TxBuf[i2] = '\0';
if(GetKPState==LOCK) printf( "SMS:%s\n", TxBuf );
if(stricmp(ruler,TxBuf)==0)
{
return 1;
}
else if(GetSvrInfo( TxBuf ))
{
return 2;
}
}
}
count_of_SMS = 0;
State_of_RcvSMS = SMS_CheckSMS;
break;
}
return 0;
}
unsigned char SWFlag = 0;
int RcvRing( )
{
int i;
switch(SWFlag)
{
case 0:
StartTickNum = clock( );
SWFlag=1;
break;
case 1:
i=CHECK( 20,"RINGrn" );
if(i==0)
{
SMSRingFlg=0;
SWFlag = 0;
if(GetKPState==LOCK) printf("Ring OK\n");
return 1;
}
else if(i<0)
{
SMSRingFlg=0;
SWFlag = 0;
// if(GetKPState==LOCK) printf("Ring tineout\n");
return 0;
}
break;
}
//if(GetKPState==LOCK) printf("Ring Running\n");
return 0;
}
int GetSvrInfo( char * Content )
{
char ruler[10]="ip,port"; //固定短信激活的参照字符串
char *ptr;
int i,j,len;
// GetZero( Content ); //把Content 地址最前列的空字符清除掉
len=strlen( Content );
if( len<10) return 0;
if( strncmpi( &Content[0], ruler, 7 )==0 )
{
ptr=strtok( Content,"=" ); //取"="号前面的字符到Content地址中
ptr=strtok( NULL,"," ); //遇到"," 字符取字符串动作结束
strcpy( Svr_ID.IPStr, ptr );
ptr=strtok( NULL,";" ); //遇到";" 字符取字符串动作结束
Svr_ID.Port = atoi(ptr );
return 1;
}
else return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -