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

📄 sms_ring.cpp

📁 湖北水文黄石试点集中器代码
💻 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 + -