📄 gprsdlg.cpp
字号:
/* rRect.left=20+uiStep*1;
rRect.right=rRect.left+uiWidth;
rRect.bottom=rRect.top+uiHight;
m_GprsDigitalbutton=new CUIButton;
if(!(m_GprsDigitalbutton->Create(_T("GPRS DIGITAL"),uiBtnStyle,rRect,this,ID_BTN_GPRSDIGITAL)))
{
MessageBox(_T("Create m_GprsDigitalbutton Fails!"));
}
m_GprsDigitalbutton->SetNormalTextColor(RGB(0,0,0));*/
//m_GprsDigitalbutton->ShowWindow(SW_HIDE);
// m_GprsDigitalbutton->SetWindowText(_T("GPRS DIGITAL"));
///////////////////////////////////////////
rRect.left=20+uiStep*1;
rRect.right=rRect.left+uiWidth;
rRect.bottom=rRect.top+uiHight;
m_GprsDiaHaltbutton=new CUIButton;
if(!(m_GprsDiaHaltbutton->Create(_T("HALT"),uiBtnStyle,rRect,this,ID_BTN_GPRSHALT)))
{
MessageBox(_T("Create m_GprsDiaHoldbutton Fails!"));
}
m_GprsDiaHaltbutton->SetNormalTextColor(RGB(0,0,0));
//m_GprsDigitalbutton->ShowWindow(SW_HIDE);
m_GprsDiaHaltbutton->SetWindowText(_T("HALT"));
///////////////////////////////////////////
rRect.left=20+uiStep*2;
rRect.right=rRect.left+uiWidth;
rRect.bottom=rRect.top+uiHight;
m_Closebutton=new CUIButton;
if(!(m_Closebutton->Create(_T("Close"),uiBtnStyle,rRect,this,ID_BTN_GPRSCLOSE)))
{
MessageBox(_T("Create m_Closebutton Fails!"));
}
m_Closebutton->SetNormalTextColor(RGB(0,0,0));
m_Closebutton->SetWindowText(_T("CLOSE"));
///////////////////////////////////////////
rRect.left=20+uiStep*3;
rRect.right=rRect.left+uiWidth;
rRect.bottom=rRect.top+uiHight;
m_Okbutton=new CUIButton;
if(!(m_Okbutton->Create(_T("OK"),uiBtnStyle,rRect,this,ID_BTN_GPRSOK)))
{
MessageBox(_T("Create m_Okbutton Fails!"));
}
m_Okbutton->SetNormalTextColor(RGB(0,0,0));
m_Okbutton->SetWindowText(_T("Exit"));
}
void CGPRSDlg::OnGprsButtonProc()
{
int iBtnID=0;
CWnd *pWnd = GetFocus();
iBtnID=pWnd->GetDlgCtrlID();
switch(iBtnID)
{
case (ID_BTN_GPRSDIA):
{
GprsDiaProc();
/***************************************/
if(m_ComPortOpen)
{
m_GprsDiabutton->EnableWindow(FALSE);
}
}
break;
case (ID_BTN_GPRSDIGITAL):
GprsDigitalProc();
break;
case (ID_BTN_GPRSOK):
if(m_ComPortOpen)
{
//如果打开了就首先要关闭
m_GprsDia.ClosePort();
}
OnOK();
break;
case (ID_BTN_GPRSHALT):
GprsDiaHalt();
break;
case (ID_BTN_GPRSCLOSE):
if(m_ComPortOpen)
{
//如果打开了就首先要关闭
if(m_GprsDia.ClosePort())
{
m_ComPortOpen=FALSE;
m_GprsDiabutton->EnableWindow(TRUE);
}
}
break;
default:
break;
}
}
void CGPRSDlg::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
}
void CGPRSDlg::OnCancel()
{
// TODO: Add extra cleanup here
// CDialog::OnCancel();
}
void CGPRSDlg::GprsDiaProc()
{
UINT uiItemIndex=0;
CString csStrPort("");
CString csStrBaudRate("");
CString csStrAtCmd("");
CString csStrEdit("");
LPTSTR lpsz = new TCHAR[1024];
int iEditLinelen=0;
uiItemIndex=m_ComPortComBox->GetCurSel();
m_ComPortComBox->GetLBText(uiItemIndex,csStrPort);//get port name
uiItemIndex=m_BaudRateComBox->GetCurSel();
m_BaudRateComBox->GetLBText(uiItemIndex,csStrBaudRate);//get port name
if(!m_ComPortOpen)
{
if(m_GprsDia.OpenPort(CSTRToLPTSTR(csStrPort),CSTRToLPTSTR(csStrBaudRate)))
{
m_ComPortOpen=TRUE;
}
else
{
return;
}
}
else
{
//如果打开了就首先要关闭
m_GprsDia.ClosePort();
if(m_GprsDia.OpenPort(CSTRToLPTSTR(csStrPort),CSTRToLPTSTR(csStrBaudRate)))
{
m_ComPortOpen=TRUE;
}
else
{
return;
}
}
//获取电话号码然后进行发送
iEditLinelen=m_DiaNum->GetLine(0,lpsz);
csStrEdit=lpsz;
csStrEdit=csStrEdit.Mid(0,iEditLinelen);
//AT CMD
csStrAtCmd=_T("ATD ");
csStrAtCmd+=csStrEdit;
csStrAtCmd+=_T(";");
csStrAtCmd+=_T("\r\n");
if(!m_ReadComPortThreadIsInit)//创建一次线程
{
ReadComPortDataThreadStart();
m_ReadComPortThreadIsInit=TRUE;
}
#ifdef _DEBUG
//两个函数是一样的作用在调试窗口中输出信息
TRACE(_T("AT CMD:"));
AfxOutputDebugString(csStrAtCmd);
#endif
//first send a AT cmd
m_GprsDia.SendATCmd(_T("AT\r\n"));
Sleep(1000);//delay 1s
//send a atd cmd
m_GprsDia.SendATCmd(CSTRToLPTSTR(csStrAtCmd));
}
void CGPRSDlg::GprsDigitalProc()
{
}
void CGPRSDlg::CreateComBox()
{
CRect rRect;
int iCxScreen=0;
int iCyScreen=0;
int iStaticWidth;
int iStaticHight;
iCxScreen=GetSystemMetrics(SM_CXSCREEN);
iCyScreen=GetSystemMetrics(SM_CYSCREEN);
iStaticWidth=100;
iStaticHight=100;
//显示串口
rRect.left=20+80;
rRect.top=20;
rRect.right=rRect.left+iStaticWidth;
rRect.bottom=rRect.top+iStaticHight;
m_ComPortComBox=new CUIComBox();
m_ComPortComBox->Init(rRect,this,IDC_COMBO_COMPORT,NULL);
//显示波特率
rRect.left=20+80;
rRect.top=42;
rRect.right=rRect.left+iStaticWidth;
rRect.bottom=rRect.top+iStaticHight;
m_BaudRateComBox=new CUIComBox();
m_BaudRateComBox->Init(rRect,this,IDC_COMBO_COMBARDRATE,NULL);
////////////////////
InsertComBoxItem();
}
void CGPRSDlg::InsertComBoxItem()
{
int i=0;
TCHAR wcBuff[50];
CString csStrBaudRate("");
m_ComPortComBox->AddString(TEXT("COM1"));
m_ComPortComBox->AddString(TEXT("COM2"));
m_ComPortComBox->AddString(TEXT("COM3"));
m_ComPortComBox->AddString(TEXT("COM4"));
m_ComPortComBox->AddString(TEXT("COM5"));
m_ComPortComBox->AddString(TEXT("COM6"));
m_ComPortComBox->AddString(TEXT("COM7"));
m_ComPortComBox->SetCurSel(0);
/******************************************
* 默认的COM3
******************************************/
m_ComPortComBox->SetCurSel(0);
for(i=0;i<9;i++)
{
_itow(gBaudRate[i],wcBuff,10);
csStrBaudRate=wcBuff;
m_BaudRateComBox->AddString(csStrBaudRate);
}
m_BaudRateComBox->SetCurSel(0);
/******************************************
* 默认的115200
******************************************/
m_BaudRateComBox->SetCurSel(8);
if(!m_bIsShowComPort)//不显示时
{
m_ComPortComBox->ShowWindow(SW_HIDE);
m_BaudRateComBox->ShowWindow(SW_HIDE);
}
}
void CGPRSDlg::CreateEdit()
{
CRect rRect;
int iCxScreen=0;
int iCyScreen=0;
int iStaticWidth;
int iStaticHight;
iCxScreen=GetSystemMetrics(SM_CXSCREEN);
iCyScreen=GetSystemMetrics(SM_CYSCREEN);
iStaticWidth=280;
iStaticHight=20;
//显示电话号码
rRect.left=20+80;
rRect.top=64;
rRect.right=rRect.left+iStaticWidth;
rRect.bottom=rRect.top+iStaticHight;
m_DiaNum=new CUIEdit();
m_DiaNum->Init(rRect,this,IDC_EDIT_DIANUM,NULL);
}
LPTSTR CGPRSDlg::CSTRToLPTSTR(CString csStrString)
{
LPTSTR lpsz = new TCHAR[csStrString.GetLength()+1];
_tcscpy(lpsz, csStrString);
return lpsz;
}
void CGPRSDlg::ReadComPortDataThreadStart()
{
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ReadComPortThread, this, 0, NULL);
if(!hThread)
{
#ifdef _DEBUG
TRACE(_T("Create ReadComPortThreadProc Failed !"));
#endif
}
CloseHandle(hThread);
}
void CGPRSDlg::GprsDiaHalt()
{
//挂断
CString csStrAtCmd("");
//AT CMD
csStrAtCmd=_T("ATH");
csStrAtCmd+=_T("\r\n");
m_GprsDia.SendATCmd(CSTRToLPTSTR(csStrAtCmd));
}
/*******************************************************************************
* Thread
********************************************************************************/
DWORD ReadComPortThread(CGPRSDlg *pCGPRSDlg)
{
pCGPRSDlg->ReadComPortThreadProc();
return(0);
}
void CGPRSDlg::ReadComPortThreadProc()
{
while(1)
{
LPTSTR ptsComPortData=_T("");
CString csStrComStateTitle("");
m_GprsDia.ReadData(&ptsComPortData);
csStrComStateTitle=ptsComPortData;
m_StaticDiaState->SetCaption(CSTRToLPTSTR(csStrComStateTitle),RGB(0,0,255),15,0);
Sleep(1000);//相当于一个定时器
}
#ifdef _DEBUG
TRACE(_T("ReadComPortThreadProc Exit!"));
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -