📄 gprsdial.cpp
字号:
// 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 + -