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

📄 gprsdial.cpp

📁 该程序是mobile5.0 ppc2003系统下的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// GprsDial.cpp: implementation of the CGprsDial class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GprsDial.h"
#include "Ras.h"
#include "RasError.h"


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGPRSConnection  CGPRSConnection::m_GPRSConnection;
CGPRSConnection::CGPRSConnection()
{
	//HangUp();
	bLinked = FALSE;
	
}

CGPRSConnection::~CGPRSConnection()
{
	//HangUp();
}

CGPRSConnection * CGPRSConnection::GetInstance()
{
	return &m_GPRSConnection;
}

BOOL CGPRSConnection::BuildConnect()
{
	::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
    RASDIALPARAMS rasDialParams;
	  //DWORD dwRes;
	  //BOOL bPassword;
    HRASCONN hRasConn =NULL;
    rasDialParams.dwSize = sizeof(RASDIALPARAMS);
    wcscpy(rasDialParams.szEntryName, _T("GPRS"));
    if(GetConnectStatus() == FALSE)
	{
		//获取参数
		//dwRes = RasGetEntryDialParams(NULL, &rasDialParams, &bPassword);
		
		if(RasDial(NULL,NULL,&rasDialParams,NULL,NULL,&hRasConn)!=0) 
		{
			::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
			//AfxMessageBox(_T("拨号失败"));
			return(FALSE);
		}    
		else
		{
			
			bLinked = TRUE;
			//AfxMessageBox(_T("拨号成功"));

			::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
			return(TRUE);
		}
		
	}
    else
    {
		/*
	AfxMessageBox(L"已经连接,断开重连");
	HangUp();
	//获取参数
	 //dwRes = RasGetEntryDialParams(NULL, &rasDialParams, &bPassword);
	 
	  if(RasDial(NULL,NULL,&rasDialParams,NULL,NULL,&hRasConn)!=0) 
	  {
	  AfxMessageBox(_T("拨号失败"));
	  ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
	  return(FALSE);
	  }    
	  else
	  {
		
	  ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
	  return(TRUE);
	 }  
	 */
	//	bLinked = FALSE;
		bLinked = TRUE;
		//AfxMessageBox(_T("拨号成功"));
		::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
		return(TRUE);
    }
}

DWORD CGPRSConnection::HangUp()
{
    DWORD dwRet = 0;
    RASCONN RASconn[100];
    DWORD  BuffSize;  //数组所占内存大小;
    RASCONNSTATUS rasconnstatus;
	DWORD dwReturn ;
	DWORD ConnNum = 0;
    RASconn[0].dwSize=sizeof(RASCONN); //必须指定一个连接[数组元素]的内存大小;
    BuffSize=sizeof(RASCONN)*100;
	
    //获得连接数
    dwReturn=RasEnumConnections(RASconn,&BuffSize,&ConnNum);
    if(dwReturn==0)
		for(DWORD i=0;i<ConnNum;i++)
			if(RasGetConnectStatus(RASconn[i].hrasconn,&rasconnstatus)==0)
				if(rasconnstatus.rasconnstate==RASCS_Connected)
				{ 
					AfxMessageBox(_T("connectnum found"));
					RasHangUp(RASconn[i].hrasconn);
				}
				
				return dwRet;
}

BOOL CGPRSConnection::GetConnectStatus()
{
	RASCONN RASconn[256];
    DWORD  BuffSize;  //数组所占内存大小;
    RASCONNSTATUS rasconnstatus;
    RASconn[0].dwSize=sizeof(RASCONN); //必须指定一个连接[数组元素]的内存大小;
    BuffSize=sizeof(RASCONN)*256;
	DWORD dwReturn;
	DWORD ConnNum =0 ;
    //获得连接数
    dwReturn=RasEnumConnections(RASconn,&BuffSize,&ConnNum);
    if(dwReturn==0)
	{
		//AfxMessageBox(_T("连接数为0"));
		for(DWORD i=0;i<ConnNum;i++)
			if(RasGetConnectStatus(RASconn[i].hrasconn,&rasconnstatus)==0)
				if(rasconnstatus.rasconnstate==RASCS_Connected)
				{
					//FormatReturnValue(dwReturn);
					//AfxMessageBox(_T("连接状态"));
					return TRUE;
				}
	}else{
		FormatReturnValue(dwReturn);
		return FALSE;
	}
	return FALSE;
}

BOOL CGPRSConnection::FormatReturnValue(DWORD returnValue)
{
	CString ErrorMessage=_T("");
	switch (returnValue)
	{
	case PENDING							:  ErrorMessage = L"PENDING";	break;
	case ERROR_INVALID_PORT_HANDLE			:  ErrorMessage = L"ERROR_INVALID_PORT_HANDLE";		break;
	case ERROR_PORT_ALREADY_OPEN			:  ErrorMessage = L"ERROR_PORT_ALREADY_OPEN";		break;

⌨️ 快捷键说明

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