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