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

📄 gprsmux.cpp

📁 通过GPRS的PPP拔号程序,本程序在x86下通过测试
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <iostream.h>
#include <time.h>
#include <dos.h>
#include "etr_ppp.h"
#include "GPRS_sms.h"
#include "etr232i.h"


char RxBuf[1500];
char TxBuf[1500];
int GetIPfromSMS( char* InStr, char* IPStr );
unsigned char IPStr[20];

int main( int argc, char** argv )
{
   int i, i1, i2, EndFlag;
   unsigned char OwnIPStr[20];
   struct RcvSMSInfo  Info[50];

   printf( "GPRS Mux test\n" );


_PowerOff:
   if( GPRSPowerIsOn() )
      {
      i = InitPPPNet( );
      i = GPRSPowerOff( );
      if( i==0 )
	 {
	 for(;;)
	    {
	    if( !GPRSPowerIsOn() )   break;
	    }
	 }
      i = TermPPPNet( );
      goto  _PowerOff;
      }


_PowerOn:
   if( !GPRSPowerIsOn( ) )
      {
      DisableIGT( );
      NB_Delay( 200 );
      EnableIGT( );
      NB_Delay( 200 );
      DisableIGT( );
      NB_Delay( 8000 );
      }

_Startup:
   i = InitPPPNet( );
   if( i < 0 )
      {
      printf( "Init failed: %d \n", i );
      return -1;
      }

   //i = SendSMS( "13880503091", "test" );
   i = SelectSMSSrv( );
   //start SerMux
   i = StartSerMux( );
   if( i<0 )
      {
      i = TermPPPNet( );
      NB_Delay(5000);
      goto _Startup;
      }
   i = SetSerMuxUp( );
   if( i<0 )
      {
      i = GPRSPowerOff( );
      i = TermPPPNet( );
      NB_Delay(5000);
      goto _PowerOn;
      }
   //SerMuxUp

   //i = SendSMS( "13880503091", "test1" );

   _TryAgain:
   i = GPRS_Logon( );
   if( i<0 )
      {
      NB_Delay( 5000 );
      //printf( "GPRS connect fail\n" );
      //i = CloseSerMuxDown( );
      //i = TermPPPNet( );
      goto _TryAgain;
      }
   printf( "GPRS connect\n" );

   i = SetupPPPLink( 15 );
   if( i < 0 )
      {
      i = GPRSPowerOff( );
      i = TermPPPNet( );
      NB_Delay(5000);
      goto _PowerOn;
      }
   printf( "PPP Link Up\n" );

   i = GetOWNIP( OwnIPStr );
   sprintf( RxBuf,"IP=%d.%d.%d.%d", OwnIPStr[0],OwnIPStr[1], OwnIPStr[2],
	    OwnIPStr[3] );

   i = SendSMS( "13880503091", RxBuf );
   //receive SMS
   for(EndFlag=1;;)
      {
      i1 = CheckSMS( Info );
      if( i1>0 )
	{
	for( i=0; i<i1; i++ )
	   {
	   i2 = ReceiveSMS( TxBuf, Info[i].Index );
	   if( i2<0 )      continue;
	   TxBuf[i2] = '\0';
	   i2 = GetIPfromSMS( TxBuf, IPStr );
	   if( i2==0 )     EndFlag=0;
	   }
	}
      if(EndFlag==0)  break;
      }


    for(;;)
       {
       if( GetPPPState( ) != 1 ) break;

       //check power is on/off
       if( !GPRSPowerIsOn( ) )
	 {
	 break;
	 }
       }

   i = ForcePPPLinkDown( );
   i = GPRSPowerOff( );
   i = TermPPPNet( );
   goto _PowerOn;

   return 0;
}


int GetIPfromSMS( char* InStr, char* IPStr )
{
   int n[4];
   if( strncmpi( InStr, "IP=", 3 ) )    return -1;
   sscanf( InStr, "IP=%d.%d.%d.%d", &n[0], &n[1], &n[2], &n[3] );
   sprintf( IPStr, "%d.%d.%d.%d", n[0], n[1], n[2], n[3] );
   return 0;
}

⌨️ 快捷键说明

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