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

📄 gtcfgdlg.cpp

📁 uart configuration source based on PC com
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	case 11:
        gstrTxat="at+hbt=";
		break;
	case 12:
        gstrTxat="at+tum=";
		break;
	default:
		break;
	}
	UpdateData(TRUE);
	strcpy(sTemp,m_strTxdata);
	TrimString(sTemp);
	csTemp.Format("%s",sTemp);
	//pEdit->SetWindowText("");
	//m_strTxdata="";

  if(iAt==0)
	{
			::AfxMessageBox("请先点击下面的参数相对应的按钮来确定修改!");
		return;
	}
	else if (iAt==1 || iAt==3 ) //add ""
	{
		CString   btnTxt,IP;   
		BYTE   f1,f2,f3,f4;   
		int   count=0;   
		TCHAR   temp[10]   =   "\0";   
		if   (m_strIP.GetAddress(f1,f2,f3,f4)   <   4)   

		  {   
				 MessageBox(_T("无效的IP设定,请重新输入!"),   
								  _T("Invalid   IP   address"),MB_OK   |   MB_ICONEXCLAMATION);   
			 m_strTxdata="";
			 UpdateData(FALSE);
			 return;   
		  }   
			  IP   =   _itoa(f1,temp,10);   
			  IP   +=   _T('.');   
			  IP   +=   _itoa(f2,temp,10);   
			  IP   +=   _T('.');   
			  IP   +=   _itoa(f3,temp,10);   
			  IP   +=   _T('.');   
			  IP   +=   _itoa(f4,temp,10);
  
		      csTemp="\""+IP+"\"";
	}
	else if (iAt==2 || iAt==4 || iAt==11)
	{
		CString sTmp=csTemp.SpanIncluding("0123456789");
	
	   if (sTmp.IsEmpty())
	   {
		     MessageBox(_T("只能输入数字,请重新输入!"),   
								  _T("数字字符串"),MB_OK   |   MB_ICONEXCLAMATION);   
			 m_strTxdata="";
			 UpdateData(FALSE);
			 return;
	   }
	   else
	   {
		   if (iAt==11)
		   {  
			   if(atoi(csTemp)==0)
			   {
				   MessageBox(_T("心跳时长不能设置为0,请重新输入!"),   
								  _T("心跳时长"),MB_OK   |   MB_ICONEXCLAMATION);   
					 m_strTxdata="";
					 UpdateData(FALSE);
					 return;
			   }
		   }
	   }
		//::AfxMessageBox(csTemp);
	}
	else if (iAt==5)
	{
		if(csTemp.IsEmpty() || csTemp.Find(",",0)<=0)
		{
			MessageBox(_T("GPRS接入点设置错误,必须输入新值并用\",\"隔开用户名与密码!"),   
								  _T("GPRS参数配置"),MB_OK   |   MB_ICONEXCLAMATION);   
	 
			 return;
		}
		csTemp="\""+csTemp+"\"";
	    csTemp.Replace(",","\",\"");
		csTemp="1,"+csTemp;
	}
	else if (iAt==8)
	{	if(csTemp.GetLength()!=8)
		{
            MessageBox(_T("设备号只能为8位,请重新输入!"),   
								  _T("设备号"),MB_OK   |   MB_ICONEXCLAMATION);   
			m_strTxdata="";
			UpdateData(FALSE);
			return;
		}
		else if (csTemp.SpanIncluding("0123456789").IsEmpty())
	   {
		     MessageBox(_T("设备号只能输入数字,请重新输入!"),   
								  _T("设备号"),MB_OK   |   MB_ICONEXCLAMATION);   
			 m_strTxdata="";
			 UpdateData(FALSE);
			 return;
	   }
	    
	}
	else if (iAt==9)
	{	if(csTemp.GetLength()>10)
		{
		  MessageBox(_T("心跳字符串最多不能超过10位,请重新输入!"),   
									  _T("心跳字符串"),MB_OK   |   MB_ICONEXCLAMATION);   
		  m_strTxdata="";
		  UpdateData(FALSE);
		  return;
		}
		csTemp="\""+csTemp+"\"";
	    
	}
    else if (iAt==10)
	{
       int index=pComb->GetCurSel();
	   switch(index)
	   {
	   case 0:
			   csTemp="1200;&w";
			   break;
	   case 1:
		    csTemp="2400;&w";
			break;
	  case 2:
		    csTemp="4800;&w";
			break;
	   default:
		    csTemp="9600;&w";
			break;
	   }
	   pComb->SetCurSel(index);
	}
	else if(iAt==6 || iAt==12)
	{
		int index=pComb->GetCurSel();
		csTemp.Format("%d",index);
		  pComb->SetCurSel(index);
	}

	if(csTemp.IsEmpty() || csTemp=="\"\"")
	{
		 MessageBox(_T("没有参数设置,请选择一个参数查询进行配置!"),   
									  _T("参数配置"),MB_OK   |   MB_ICONEXCLAMATION);   
		 
				 return;
	}
	gstrTxat+=csTemp;
	SendUserAt(iAt,gstrTxat);
	gstrTxat1=gstrTxat;

	if (iAt==10)
	{
		CButton* pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_COPEN);
		   pBtn->SetWindowText("打开串口");
   
	   if (isOpen)
	   { 
		  
		   isOpen=FALSE;
		   ::AfxMessageBox("波特率修改成功,请重新打开串口!");
		   gpPort->ClosePort(m_hComDev);
		   pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO2);
		   csTemp.Replace(";&w","");
		  int nIndex=pComb->FindString(0,csTemp);
		  pComb->SetCurSel(nIndex);
 		  CStatic   *pStatic=(CStatic*)GetDlgItem(IDC_STATIC_PIC);  
		  HICON    hIcon;
		  hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
		  pStatic->SetIcon(hIcon);
		   return;

	   }
	}
}
int TrimString(char *str)
{
	int len;
	int k=0;
	register int i = 0;
	len = strlen(str);
	for(i = len-1; i>0 ; i--)
	{
		if(str[i]==' ') 
		{
			str[i]=0;
		}
		else
		{
			break;
		}
	}
	return 0;
}
void LTrim(char *t)
{

	char tmp[700];				//Temp Char VAR
	char *buf;					//Pointer
	if (!strlen(t)) return;

	strcpy(tmp,t);
	buf=tmp;

	while (*buf == ' ' && strlen(buf))	*buf++;

	strcpy(t,buf);
}
void RTrim(char *t)
{
	char *buf;
	if (!strlen(t)) return;
	buf = t;
	buf += strlen(t) -1;
	while (*buf == ' ' && strlen(t) )
		*buf-- = '\0';
}
void CGTcfgDlg::SendUserAt(int ipot,CString strat)
{
	int iLen,iCount,i;

	char sUserAt[100];
	gstrTxat=strat;
	iLen=strat.GetLength();
	strat+='\r';
	strcpy(sUserAt,strat);
	gpPort->SendData(sUserAt,strlen(sUserAt));

    gAt_id=ipot;
    CButton* pBtxt=(CButton*)this->GetDlgItem(IDC_BUTTON_TEXT);
   	CComboBox* pComb=(CComboBox*)this->GetDlgItem(IDC_COMBO_BT);
	CEdit* pEdit=(CEdit*)this->GetDlgItem(IDC_EDIT_TXDATA);
	CEdit* pEip=(CEdit*)this->GetDlgItem(IDC_IPBOX);
   //cstxt.SetWindowText("测试的");ShowWindow(SW_HIDE);//ShowWindow(SW_SHOW);
	pEdit->ShowWindow(SW_SHOW);
	pEdit->EnableWindow(true);
	pComb->ShowWindow(SW_HIDE);
	pEip->ShowWindow(SW_HIDE);
	pBtxt->EnableWindow(false);
   switch(ipot)
   {
	   case 1:
		   pBtxt->SetWindowText("第一中心服务器IP:");
		 
		   pEdit->ShowWindow(SW_HIDE);
		   pEip->ShowWindow(SW_SHOW);
		   break;
	   case 2:
		    pBtxt->SetWindowText("第一中心服务器端口:");
		   break;
	  case 3:
		   pBtxt->SetWindowText("第二中心服务器IP:");
		   pEdit->ShowWindow(SW_HIDE);
		   pEip->ShowWindow(SW_SHOW);
		   break;
	  case 4:
		    pBtxt->SetWindowText("第二中心服务器端口:");
		   break;
	  case 5:
		    pBtxt->SetWindowText("网络接入点(格式为:APN名称,用户名,密码,用,隔开,如中国移动CMNET):CMENT,用户名,密码");
		   break;
	  case 6:
		    pBtxt->SetWindowText("GPRS连接(0断开,1连接):");
		   pComb->Clear();
		    iCount=pComb->GetCount();
		   for(i=0;i<=iCount;i++)
		   {
			   pComb->DeleteString(i);
		   }
		   pComb->AddString("断开");
			pComb->AddString("连接");
			pComb->DeleteString(0);
			pComb->SetCurSel(0);
			pEdit->ShowWindow(SW_HIDE);
			pComb->ShowWindow(SW_SHOW);
		   break;
       case 8:
		    pBtxt->SetWindowText("设备号一般8位(如07078888):");
		   break;
	  case 9:
		    pBtxt->SetWindowText("心跳字符串最大10位(如00):");
		   break;
	  case 10:
		    pBtxt->SetWindowText("请选择通讯速率:");
		   pComb->Clear();
		   iCount=pComb->GetCount();
		   	while(1)
			{
			   for(i=0;i<iCount;i++)
			   {
				   pComb->DeleteString(i);
			   }
			   Sleep(10);
				iCount=pComb->GetCount();
				if (iCount<=0)
					break;

		   	}
			pComb->AddString("1200");
			pComb->AddString("2400");
			pComb->AddString("4800");
			pComb->AddString("9600");
			iCount=pComb->GetCount();
			if (iCount>4)
	        	pComb->DeleteString(0);
			pComb->SetCurSel(3);
			pEdit->ShowWindow(SW_HIDE);
			pComb->ShowWindow(SW_SHOW);
			break;
       case 11:
		    pBtxt->SetWindowText("心跳时长(如1为1分钟):");
		   break;
		case 12:
		    pBtxt->SetWindowText("传输模式(如1为UDP,0为TCP)");
            iCount=pComb->GetCount();
			while(1)
			{

			   for(i=0;i<iCount;i++)
			   {
				  // pComb->SetCurSel(i);
				   pComb->DeleteString(i);
			   }
			   Sleep(10);
				iCount=pComb->GetCount();
				if (iCount<=0)
					break;

		   	}
		    pComb->AddString("TCP");
			pComb->AddString("UDP");
	
           
		pComb->SetCurSel(0);
		pEdit->ShowWindow(SW_HIDE);
			pComb->ShowWindow(SW_SHOW);
		   break;
	   default:
		    pBtxt->SetWindowText("新参数值");
		   pEdit->EnableWindow(false);
		   pEdit->SetWindowText("");
		   break;

   }
}
BEGIN_EVENTSINK_MAP(CGTcfgDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CGTcfgDlg)
//	ON_EVENT(CGTcfgDlg, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

 void CGTcfgDlg::OnComm(char* pRecv) 
{

    CString strtemp,sTemp="",strtmp;
	CString sLink="";
	strtemp.Format("%s",pRecv);
	sLink+=strtemp;
	m_strRxdata+=strtemp;
    gstrChck=sLink;

		if(gAt_id==20)
		{
			m_strRxdata.Replace("+SRV1IP","第一中心IP");
			m_strRxdata.Replace("+SRV1PT","第一中心端口");
			m_strRxdata.Replace("+SRV2IP","第二中心IP");
			m_strRxdata.Replace("+SRV2PT","第二中心端口");
			m_strRxdata.Replace("+IPGPRS:","网络接入点");
			m_strRxdata.Replace("+TUM","连接方式");
			m_strRxdata.Replace("Module ID=","设备号");
			m_strRxdata.Replace("+HBS","心跳字符串");
			m_strRxdata.Replace("+HBT:","心跳时长");
			m_strRxdata.Replace("+IPR:","通讯速率");
			m_strRxdata.Replace("Version=","版本号");

		}



      m_strRxdata.Replace(gstrTxat,"");
	  strtmp=gstrTxat.Mid(2,gstrTxat.GetLength()-3);
	  strtmp.MakeUpper();
	   m_strRxdata.Replace(strtmp+":","");
	 //  m_strRxdata.Replace("OK","");
   // UpdateData(FALSE); //更新编辑框内容
	    m_strRxdata.Replace("ERROR","失败");
   CEdit* pStrRx=(CEdit*)this->GetDlgItem(IDC_EDIT_RXDATA);
          pStrRx->SetWindowText(m_strRxdata);
          pStrRx->SetSel(6,-1,FALSE);
}

void CGTcfgDlg::OnButtonOpenc() 
{
	// TODO: Add your control notification handler code here
	if (isIPC)
	{
		//SendUserAt(0,"+++");
		int i=0;
		while(i<3)
		{
			gpPort->SendData("+++",3);
		i++;
		Sleep(10);
		}
		 SendUserAt(0,"ATE0");
         SendUserAt(0,"at+ipc=0");
		SendEnable(1);
		isIPC=FALSE;
	hCheckhread=CreateThread(NULL,0,GetCheckThread,(LPVOID)this,0,NULL);
	}
	else
	{
		SendUserAt(0,"at+ipc=1");
		SendEnable(0);
		gstrChck="";
		isIPC=true;
	}
}
void CGTcfgDlg::SendEnable(int isFlag){
	CButton* pBtn=NULL;
	 pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_OPENC);
	if (isFlag==0)
	{
		pBtn->SetWindowText("进入设置状态");
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV1IP);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV1PT);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV2IP);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV2PT);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IPGPRS);
	    pBtn->EnableWindow(FALSE);
//		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IPC);
//	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_TUM);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IMEI);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_HBS);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IPR);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_HBT);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_VER);
	    pBtn->EnableWindow(FALSE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SELALL);
	    pBtn->EnableWindow(FALSE);
	}
	else if (isFlag==1)
	{
		pBtn->SetWindowText("退出设置状态");
			pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV1IP);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV1PT);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV2IP);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SRV2PT);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IPGPRS);
	    pBtn->EnableWindow(TRUE);
		//pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IPC);
	    //pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_TUM);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IMEI);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_HBS);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_IPR);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_HBT);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_VER);
	    pBtn->EnableWindow(TRUE);
		pBtn=(CButton*)this->GetDlgItem(IDC_BUTTON_SELALL);
	    pBtn->EnableWindow(TRUE);
	}
}


void CGTcfgDlg::OnButtonVer() 
{
	// TODO: Add your control notification handler code here

		gstrTxat1="at+ver";
	SendUserAt(14,"at+ver");
}

void CGTcfgDlg::OnButtonSelall() //增加所有参数配置
{
	// TODO: Add your control notification handler code here
	SendUserAt(20,"at+srv1ip?");
	SendUserAt(20,"at+srv1pt?");
	SendUserAt(20,"at+srv2ip?");
	SendUserAt(20,"at+srv2pt?");
    SendUserAt(20,"at+ipgprs?");
	SendUserAt(20,"at+tum?");
	SendUserAt(20,"at+imei?");
	SendUserAt(20,"at+hbs?");
	SendUserAt(20,"at+ipr?");
	SendUserAt(20,"at+hbt?");
	SendUserAt(20,"at+ver");
	//SendUserAt(0,"at+srv2pt?");
}
//DWORD WINAPI ReadPortThread(LPVOID lpvoid)
UINT ReadPortThread(LPVOID lpvoid) //读数据线程
{
      
		char sRevData[256],sLink[256];
		int  iLen;
	    CString strtemp,sTemp="",strtmp;
		CGTcfgDlg* pView=(CGTcfgDlg*)lpvoid;
	// HWND   hDlg   =   (HWND)pParam;  
		ASSERT(  pView !=   NULL   );  
       while (isOpen) 
       {
              //等待串口的事件发生
        Sleep(10);
              if (iLen= gpPort->ReadData(sRevData,255)) 
              {
					sRevData[iLen]='\0';
					sprintf(sLink,"%s",sRevData);
					RTrim(sLink);
					LTrim(sLink);
					TrimString(sLink);
					pView->OnComm(sLink);	
                     }     
       }
       return 0;
}

DWORD  WINAPI GetCheckThread(LPVOID lpParam) //检测设备状态线程
{
	int i=0;
	CGTcfgDlg* pView=(CGTcfgDlg*)lpParam;
	while(isOpen)
	{
		Sleep(50);
		i++;
		if (i>=10 && gstrChck.IsEmpty())
		{
				pView->SendEnable(0);
			MessageBox(NULL,_T("串口不能正常使用请检查EII-C3设备是否正常连接在串口上!"),   
								  _T("设备连接异常"),MB_OK   |   MB_ICONEXCLAMATION);  
			isIPC=true;
		
			 break;
		}
        if(i>10)
			break;
	}
	return 0;
}

⌨️ 快捷键说明

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