📄 portsetting.cpp
字号:
// PortSetting.cpp : implementation file
//
#include "stdafx.h"
#include "GpsRecv.h"
#include "PortSetting.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPortSetting dialog
CPortSetting::CPortSetting(CWnd* pParent /*=NULL*/)
: CDialog(CPortSetting::IDD, pParent)
{
//{{AFX_DATA_INIT(CPortSetting)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_nPort = 1;
m_nBaud = 9600;
m_nParity = 0;
m_nStopBits = 0;
m_nDataBits = 8;
}
void CPortSetting::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPortSetting)
DDX_Control(pDX, IDC_STOPBITS_COMBO, m_StopBits);
DDX_Control(pDX, IDC_PARITY_COMBO, m_Parity);
DDX_Control(pDX, IDC_DATABITS_COMBO, m_DataBits);
DDX_Control(pDX, IDC_BAUD_COMBO, m_Baud);
DDX_Control(pDX, IDC_PORT_COMBO, m_Port);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPortSetting, CDialog)
//{{AFX_MSG_MAP(CPortSetting)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPortSetting message handlers
BOOL CPortSetting::OnInitDialog()
{
CDialog::OnInitDialog();
//查询本地计算机上的串口
for (int i = 1; i < 256; i++)
{
CString sPort;
sPort.Format(_T("\\\\.\\COM%d"), i);
BOOL bSuccess = FALSE;
HANDLE hPort = ::CreateFile(sPort, GENERIC_READ | GENERIC_WRITE,
0, 0, OPEN_EXISTING, 0, 0);
if (hPort == INVALID_HANDLE_VALUE)
{
DWORD dwError = GetLastError();
if (dwError == ERROR_ACCESS_DENIED)
bSuccess = TRUE;
}
else
{
bSuccess = TRUE;
CloseHandle(hPort);
}
if (bSuccess)
{
CString str;
str.Format("COM%d", i);
m_Port.AddString(str);
}
}
CString strPort;
strPort.Format(_T("COM%d"), m_nPort);
int index = m_Port.FindStringExact(0, strPort);
if(index != CB_ERR)
m_Port.SetCurSel(index);
m_Baud.AddString(_T("1200"));
m_Baud.AddString(_T("2400"));
m_Baud.AddString(_T("4800"));
m_Baud.AddString(_T("9600"));
m_Baud.AddString(_T("7200"));
m_Baud.AddString(_T("14400"));
m_Baud.AddString(_T("19200"));
m_Baud.AddString(_T("38400"));
m_Baud.AddString(_T("57600"));
CString sBaud;
sBaud.Format(_T("%d"), m_nBaud);
index = m_Baud.FindStringExact(0, sBaud);
if(index != CB_ERR)
m_Baud.SetCurSel(index);
m_DataBits.AddString(_T("5"));
m_DataBits.AddString(_T("6"));
m_DataBits.AddString(_T("7"));
m_DataBits.AddString(_T("8"));
m_DataBits.SetCurSel(m_nDataBits - 5);
m_StopBits.AddString(_T("1"));
m_StopBits.AddString(_T("1.5"));
m_StopBits.AddString(_T("2"));
m_StopBits.SetCurSel(m_nStopBits);
m_Parity.AddString(_T("NONE"));
m_Parity.AddString(_T("ODD"));
m_Parity.AddString(_T("EVEN"));
m_Parity.SetCurSel(m_nParity);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPortSetting::OnOK()
{
CString sPort;
m_Port.GetWindowText(sPort);
sPort = sPort.Right(sPort.GetLength() - 3);
m_nPort = atoi(sPort);
CString sBaud;
m_Baud.GetWindowText(sBaud);
m_nBaud = atoi(sBaud);
CString sDataBits;
m_DataBits.GetWindowText(sDataBits);
m_nDataBits = atoi(sDataBits);
m_nStopBits = m_StopBits.GetCurSel();
m_nParity = m_Parity.GetCurSel();
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -