关于GPRS通讯接口编程-RSA编程

直接贴代码~~~~

 int CCollectApp::CheckGPRSConnect(void)
{
 RASCONN rcArray[100];
 RASCONNSTATUS rStatus;
 DWORD dwRet=0;
 DWORD dw1 = sizeof(rcArray);
 DWORD dw2;
 ZeroMemory(rcArray, dw1);
 rcArray[0].dwSize = sizeof(RASCONN);
 dwRet = ::RasEnumConnections(rcArray, &dw1, &dw2);
// ERROR_BUFFER_TOO_SMALL
 ZeroMemory(&rStatus, sizeof(RASCONNSTATUS));
 rStatus.dwSize = sizeof(RASCONNSTATUS);
 for (dw1 = 0; dw1 < dw2; dw1++)
 {
  dwRet = RasGetConnectStatus(rcArray[dw1].hrasconn, &rStatus);
  if(dwRet!=0)
  {
   //::AfxMessageBox(_T("取系统信息出错"),MB_OK,0);
   return 2;
  }
  if (RASCS_Connected == rStatus.rasconnstate)
  {   
   //char *sss= "GZJMJC.GD";
   if(strcmp(rcArray[dw1].szEntryName,m_strGPRSName.GetBuffer())==0)
   {
    m_hGPRScon = rcArray[dw1].hrasconn;
    m_bGPRSCon = true;
    return 1;
   }
   m_strGPRSName.ReleaseBuffer();
  }
 }
 return 0;
}

bool CCollectApp::ConnectGPRS(void)
{
 RASDIALPARAMS para;
 ZeroMemory(&para,sizeof(RASDIALPARAMS));
 para.dwSize = sizeof(RASDIALPARAMS);
 strcpy(para.szEntryName,m_strGPRSName.GetBuffer()); //"GZJMJC.GD"
 m_strGPRSName.ReleaseBuffer();
 //para.szEntryName="GZJMJC.GD";
 DWORD statu = ::RasDial(NULL,NULL,&para,0,OnGPRSConnect,&m_hGPRScon);
 if(statu == 0)
 {
  DWORD n = 0;
  while(!m_bGPRSCon)
  {
   n++;
   Sleep(10);
   if(n>15*100)
    break;
   DoMessageLoop();
  }
 }
 if(m_bGPRSCon)
  return true; 
 else
 {
  m_hGPRScon = NULL;
  return false;
 }
}

bool CCollectApp::ConnectGPRS(CTitleTipDlg *dlg)
{
 RASDIALPARAMS para;
 ZeroMemory(&para,sizeof(RASDIALPARAMS));
 para.dwSize = sizeof(RASDIALPARAMS);
 strcpy(para.szEntryName,m_strGPRSName.GetBuffer()); //"GZJMJC.GD"
 m_strGPRSName.ReleaseBuffer();
 //para.szEntryName="GZJMJC.GD";
 DWORD statu = ::RasDial(NULL,NULL,&para,0,OnGPRSConnect,&m_hGPRScon);
 if(statu == 0)
 {
  DWORD n = 0;
  dlg->ShowPrg();
  dlg->SetRange(15*100);
  while(!m_bGPRSCon)
  {
   n++;
   dlg->StepIt();
   Sleep(10);
   if(n>15*100 || gzproto->blCancel)
    break;
   DoMessageLoop();
  }
 }
 if(gzproto->blCancel)
 {
  TransLog(_T("用户取消当前操作。"), NONLOG, theApp.strUsrName);
 }
 if(m_bGPRSCon)
  return true; 
 else
 {
  ::RasHangUp(m_hGPRScon);
  m_hGPRScon = NULL;
  return false;
 }
}


void WINAPI OnGPRSConnect(UINT unMsg,RASCONNSTATE rasconnstate,DWORD dwError)

 if(dwError == 0)
 {
  switch(rasconnstate)
  {
  case RASCS_Connected:
   {
    theApp.m_bGPRSCon = true;
    break;
   }
  }
 }  
}


bool CCollectApp::HangUpGPRSCon(void)
{
 int l = CheckGPRSConnect();
 if(l==1)
  m_bGPRSCon = true;
 else
  m_bGPRSCon = false;
 
 if(!m_bGPRSCon)
  return true;
 DWORD n = ::RasHangUp(m_hGPRScon);
 if(n ==0)
 {
  while(1)
  {
   if(!CheckGPRSConnect())
    break;
   Sleep(10);
  }
  m_hGPRScon = NULL;
  m_bGPRSCon = false;
  return true;
 } 
 else
 return false;
}

bool CCollectApp::AutoConnectGPRS(CTitleTipDlg *dlg,CString tmpstr,CString tmpstr1)
{
 CString tempTitle;  
 dlg->GetWindowText(tempTitle);

 int nCheckCount = 0;
 int n = CheckGPRSConnect();
 if(n==2)
  ::AfxMessageBox(_T("取系统信息出错"),MB_OK,0);
 else if(n == 0)
  m_bGPRSCon = false;
 else
  m_bGPRSCon = true;

 if(gzproto->blCancel)
  return m_bGPRSCon;

 CString tmpstr2;
 if(!m_bGPRSCon)
 {
  tmpstr2 = _T("系统发现GPRS MODEM没有接入网络,正在接入......");
//  dlg->GetDlgItem(IDCANCEL)->EnableWindow(false);
  dlg->SetWindowText(tmpstr2);
  TransLog(tmpstr2, NONLOG, strUsrName);

  if(!ConnectGPRS(dlg))
  {
   while(nCheckCount<3 && !gzproto->blCancel)
   {
    tmpstr2.Format("接入GPRS网络失败,进行第%d次重连!",nCheckCount+1);// = _T("无法建立GPRS连接,进行!");
    dlg->SetWindowText(tmpstr2);
    TransLog(tmpstr2, NONLOG, strUsrName);
    if(!ConnectGPRS(dlg))
    {
     if(!gzproto->blCancel)
     {
      tmpstr2.Format("第%d次重连GPRS网络失败!",nCheckCount+1);
      TransLog(tmpstr2, NONLOG, strUsrName);
     }
     nCheckCount++;
    }
    else
    {
     tmpstr2 = _T("已成功将GPRS MODEM接入网络!");
     if(!gzproto->blCancel)
     {
      dlg->SetWindowText(tmpstr2);
      dlg->ShowMsg(tmpstr2);
      TransLog(tmpstr2, NONLOG, strUsrName);
     }
     Sleep(300);
     dlg->SetWindowText(tempTitle);
  //   m_bGPSRCancle = false;
     return true;
    }
   }    
  }
 // m_bGPSRCancle = false;
  dlg->GetDlgItem(IDCANCEL)->EnableWindow(true);
  if(!m_bGPRSCon)
  {
   if(!gzproto->blCancel)
   {
    tmpstr2 = _T("无法建立GPRS连接!");
    TransLog(tmpstr2, NONLOG, strUsrName);
   }
   dlg->SetWindowText(tempTitle);
   return false;
  }
  else
  {
   tmpstr2 = _T("已成功建立GPRS连接!");
   
   if(!gzproto->blCancel)
   {
    dlg->SetWindowText(tmpstr2);
    dlg->ShowMsg(tmpstr2);
    TransLog(tmpstr2, NONLOG, strUsrName);
   }
   Sleep(300);
   dlg->ShowMsg(tmpstr);
   //TransLog(tmpstr1, JZQMODE, strUsrName);
   dlg->SetWindowText(tempTitle);
   return true;
  }
 }
 else
 {
  dlg->SetWindowText(tempTitle);
  return true;
 }
  
}

bool CCollectApp::AutoConnectGPRS(CTitleTipDlg *dlg)
{
 CString tempTitle;  
 dlg->GetWindowText(tempTitle);

 int nCheckCount = 0;
 int n = CheckGPRSConnect();
 if(n==2)
  ::AfxMessageBox(_T("取系统信息出错"),MB_OK,0);
 else if(n == 0)
  m_bGPRSCon = false;
 else
  m_bGPRSCon = true;


 if(gzproto->blCancel)
  return m_bGPRSCon;

 CString tmpstr2;
 if(!m_bGPRSCon)
 {
  tmpstr2 = _T("系统发现GPRS MODEM没有接入网络,正在接入......");
 // dlg->GetDlgItem(IDCANCEL)->EnableWindow(false);
  dlg->SetWindowText(tmpstr2);
  TransLog(tmpstr2, NONLOG, strUsrName);
 
  if(!ConnectGPRS(dlg))
  {
   while(nCheckCount<3 && !gzproto->blCancel)
   {
    tmpstr2.Format("接入GPRS网络失败,进行第%d次重连!",nCheckCount+1);// = _T("无法建立GPRS连接,进行!");
    dlg->SetWindowText(tmpstr2);
    TransLog(tmpstr2, NONLOG, strUsrName);
    if(!ConnectGPRS(dlg))
    {
     if(!gzproto->blCancel)
     {
      tmpstr2.Format("第%d次重连GPRS网络失败!",nCheckCount+1);
      TransLog(tmpstr2, NONLOG, strUsrName);
     }     
     nCheckCount++;
    }
    else
    {
     tmpstr2 = _T("已成功将GPRS MODEM接入网络!");
     if(!gzproto->blCancel)
     {
      dlg->SetWindowText(tmpstr2);
      dlg->ShowMsg(tmpstr2);
      TransLog(tmpstr2, NONLOG, strUsrName);
     }
     Sleep(300);
     dlg->SetWindowText(tempTitle);
     dlg->ShowMsg(tempTitle);
 //    m_bGPSRCancle = false;
     return true;
    }
   }    
  }
 // m_bGPSRCancle = false;
//  dlg->GetDlgItem(IDCANCEL)->EnableWindow(true);
  if(!m_bGPRSCon)
  {
   if(!gzproto->blCancel)
   {
    tmpstr2 = _T("将GPRS MODEM接入网络失败!");
    TransLog(tmpstr2, NONLOG, strUsrName);
   }
   dlg->SetWindowText(tempTitle);
   return false;
  }
  else
  {
   tmpstr2 = _T("已成功将GPRS MODEM接入网络!");
   
   if(!gzproto->blCancel)
   {
    dlg->SetWindowText(tmpstr2);
    dlg->ShowMsg(tmpstr2);
    TransLog(tmpstr2, NONLOG, strUsrName);
   }
   Sleep(300);
   dlg->SetWindowText(tempTitle);
   dlg->ShowMsg(tempTitle);
   return true;
  }
 }
 else
 {
  dlg->SetWindowText(tempTitle);
  dlg->ShowMsg(tempTitle);
  return true;
 }
  
}

bool CCollectApp::AutoConnectGPRS()
{
 int nCheckCount = 0;
 int n = CheckGPRSConnect();
 if(n==2)
  ::AfxMessageBox(_T("取系统信息出错"),MB_OK,0);
 else if(n == 0)
  m_bGPRSCon = false;
 else
  m_bGPRSCon = true;

 CString tmpstr2;
 if(!m_bGPRSCon)
 {
  tmpstr2 = _T("没有建立GPRS连接,正在建立连接......");
  CCollectDlg *dlg = (CCollectDlg *)(((CCollectApp *)AfxGetApp())->m_pMainWnd);
  
  if(dlg->m_bTopWinCreat)
   dlg->dlgTitleTip->DestroyWindow(); 
  if(dlg->dlgTitleTip !=NULL)
  {
   delete (dlg->dlgTitleTip);
   dlg->dlgTitleTip = NULL;
  }
  
  dlg->dlgTitleTip = new CTitleTipDlg();
  dlg->dlgTitleTip->Create(tmpstr2);
  dlg->dlgTitleTip->GetDlgItem(IDCANCEL)->EnableWindow(false);
  dlg->dlgTitleTip->SetWindowText(tmpstr2);
  TransLog(tmpstr2, JZQMODE, strUsrName);
  if(!ConnectGPRS(dlg->dlgTitleTip))
  {
   while(nCheckCount<3)
   {
    tmpstr2.Format("建立GPRS连接失败,进行第%d次重连!",nCheckCount+1);// = _T("无法建立GPRS连接,进行!");
    dlg->dlgTitleTip->SetWindowText(tmpstr2);
    TransLog(tmpstr2, JZQMODE, strUsrName);
    if(!ConnectGPRS())
    {
     tmpstr2.Format("第%d次重新连接失败!",nCheckCount+1);
     nCheckCount++;
     TransLog(tmpstr2, JZQMODE, strUsrName);
    }
    else
    {
     tmpstr2 = _T("已成功建立GPRS连接!");
     dlg->SetWindowText(tmpstr2);
     dlg->dlgTitleTip->ShowMsg(tmpstr2);
     TransLog(tmpstr2, JZQMODE, strUsrName);
     Sleep(300);
     return true;
    }
   }    
  }
  dlg->dlgTitleTip->GetDlgItem(IDCANCEL)->EnableWindow(true);
  if(!m_bGPRSCon)
  {
   tmpstr2 = _T("无法建立GPRS连接!");
   TransLog(tmpstr2, JZQMODE, strUsrName);
   
   if(dlg->m_bTopWinCreat)
    dlg->dlgTitleTip->DestroyWindow();
   if(dlg->dlgTitleTip != NULL)
   {
    delete (dlg->dlgTitleTip);
    dlg->dlgTitleTip = NULL;   
   }
   return false;
  }
  else
  {
   tmpstr2 = _T("已成功建立GPRS连接!");   
   dlg->dlgTitleTip->ShowMsg(tmpstr2);
   Sleep(300);
   TransLog(tmpstr2, JZQMODE, strUsrName);
   
   if(dlg->m_bTopWinCreat)
    dlg->dlgTitleTip->DestroyWindow();
   if(dlg->dlgTitleTip != NULL)
   {
    delete (dlg->dlgTitleTip);
    dlg->dlgTitleTip = NULL;   
   }
   
   return true;
  }
 }
 else
  return true;
}

void CCollectApp::CloseConnect(void)
{
 CCollectDlg *dlg = (CCollectDlg *)m_pMainWnd;
 
 dlg->EndIdel();
 if(m_ctrlmodem->IsOpen() && theApp.gzproto->uiCommType == COMM_MODEM)
 {
  m_ctrlmodem->uiModemState = CmdState;
  m_ctrlmodem->HangUp();
  gzproto->uiReceiveBufferProcPointer = 0;
  gzproto->uiReceiveBufferFillPointer = 0;
 } 
 if(psocket->IsOpen())
 {
  gzproto->CloseCommRoutine();
  psocket->StopComm();
  psocket->CloseComm();
   
 }
 dlg->blConnectingFlag = FALSE;
 Sleep(300);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值