📄 comsetting.cpp
字号:
// ComSetting.cpp : implementation file
//
#include "stdafx.h"
#include "InertPlatomControl.h"
#include "ComSetting.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CComSetting dialog
CComSetting::CComSetting(CWnd* pParent /*=NULL*/)
: CDialog(CComSetting::IDD, pParent)
{
//{{AFX_DATA_INIT(CComSetting)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_bOpenPort=FALSE;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
}
void CComSetting::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CComSetting)
DDX_Control(pDX, IDC_COMBO_BAUD, m_Baud);
DDX_Control(pDX, IDC_COMBO_PARITY, m_POC);
DDX_Control(pDX, IDC_COMBO_DATABITS, m_DatumBits);
DDX_Control(pDX, IDC_COMBO_STOPBITS, m_PauseBits);
DDX_Control(pDX, IDC_STATIC_STATUS, m_ctrlPortStatus);
DDX_Control(pDX, IDC_STATIC_OPENOFF, m_ctrlIconOpenoff);
DDX_Control(pDX, IDC_BUTTON_OPENPORT, m_ctrlOpenPort);
DDX_Control(pDX, IDC_COMBO_COMSELECT, m_Com);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CComSetting, CDialog)
//{{AFX_MSG_MAP(CComSetting)
ON_CBN_SELENDOK(IDC_COMBO_COMSELECT, OnSelendokComboComselect)
ON_BN_CLICKED(IDC_BUTTON_OPENPORT, OnButtonOpenport)
ON_CBN_SELENDOK(IDC_COMBO_BAUD, OnSelendokComboBaud)
ON_CBN_SELENDOK(IDC_COMBO_PARITY, OnSelendokComboParity)
ON_CBN_SELENDOK(IDC_COMBO_DATABITS, OnSelendokComboDatabits)
ON_CBN_SELENDOK(IDC_COMBO_STOPBITS, OnSelendokComboStopbits)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CComSetting message handlers
//打开/关闭串口
void CComSetting::OnButtonOpenport()
{
// TODO: Add your control notification handler code here
m_bOpenPort=!m_bOpenPort;
if(m_bOpenPort) //关闭串口
{
/*if(m_ctrlAutoSend.GetCheck())
{
m_bOpenPort=!m_bOpenPort;
AfxMessageBox("请先关掉自动发送");
return;
}*/
m_ctrlOpenPort.SetWindowText("打开串口");
m_Port.ClosePort();//关闭串口
m_ctrlPortStatus.SetWindowText("STATUS:COM Port Closed");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
else //打开串口
{
m_ctrlOpenPort.SetWindowText("关闭串口");
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
//"当前状态:串口打开,无奇偶校验,8数据位,1停止位");
}
else
{
AfxMessageBox("没有发现此串口或被占用");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
}
void CComSetting::OnSelendokComboComselect()
{
// TODO: Add your control notification handler code here
if(m_Port.m_hComm!=NULL)
{
m_Port.ClosePort();
}
m_nCom=m_Com.GetCurSel()+1;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
AfxMessageBox("没有发现此串口或被占用");
}
}
void CComSetting::OnSelendokComboBaud()
{
// TODO: Add your control notification handler code here
CString temp;
int i=m_Baud.GetCurSel();
switch(i)
{
case 0:
i=115200;
break;
case 1:
i=9600;
break;
case 2:
i=19200;
break;
case 3:
i=38400;
break;
case 4:
i=43000;
break;
case 5:
i=56000;
break;
case 6:
i=57600;
break;
default:
break;
}
m_nBaud=i;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
void CComSetting::OnSelendokComboParity()
{
// TODO: Add your control notification handler code here
char temp;
int i=m_POC.GetCurSel();
switch(i)
{
case 0:
temp='N';
break;
case 1:
temp='O';
break;
case 2:
temp='E';
break;
}
m_cParity=temp;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
void CComSetting::OnSelendokComboStopbits()
{
// TODO: Add your control notification handler code here
int i=m_PauseBits.GetCurSel();
switch(i)
{
case 0:
i=1;
break;
case 1:
i=2;
break;
}
m_nStopbits=i;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
void CComSetting::OnSelendokComboDatabits()
{
// TODO: Add your control notification handler code here
int i=m_DatumBits.GetCurSel();
switch(i)
{
case 0:
i=8;
break;
case 1:
i=7;
break;
case 2:
i=6;
break;
}
m_nDatabits=i;
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
if(!m_bOpenPort)
{
m_Port.StartMonitoring();
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
else
{
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
strStatus.Format("STATUS:COM%d CLOSED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
}
m_ctrlPortStatus.SetWindowText(strStatus);
}
else
{
AfxMessageBox("没有成功,请重试");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
}
BOOL CComSetting::OnInitDialog()
{
BOOL b = CDialog::OnInitDialog();
m_Com.SetCurSel(0);
m_Baud.SetCurSel(5);
m_POC.SetCurSel(0);
m_DatumBits.SetCurSel(0);
m_PauseBits.SetCurSel(0);
m_hIconRed = AfxGetApp()->LoadIcon(IDI_ICON_RED);
m_hIconOff = AfxGetApp()->LoadIcon(IDI_ICON_OFF);
// m_ctrlIconDatareceive.SetIcon(m_hIconOff);
m_nBaud=115200;
m_nCom=1;
m_cParity='N';
m_nDatabits=8;
m_nStopbits=1;
m_dwCommEvents = EV_RXFLAG | EV_RXCHAR;
// UpdateData(true);
CString strStatus;
if (m_Port.InitPort(this, m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
{
m_Port.StartMonitoring();
strStatus.Format("STATUS:COM%d OPENED,%d,%c,%d,%d",m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits);
m_ctrlIconOpenoff.SetIcon(m_hIconRed);
//"当前状态:串口打开,无奇偶校验,8数据位,1停止位");
}
else
{
AfxMessageBox("没有发现此串口");
m_ctrlIconOpenoff.SetIcon(m_hIconOff);
}
m_ctrlPortStatus.SetWindowText(strStatus);
return b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -