亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? common_serialdlg.cpp

?? 同時可以打開兩個串口的程序??梢赃M(jìn)行收發(fā)試驗(yàn)。
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// ComMonDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ComMon_SERIAL.h"
#include "ComMon_SERIALDlg.h"
#include "SerialPort.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define CLOCK1		1
#define CLOCK2		2

static LONG HexToChar(void* pVoidOut, int nInSize, void* pVoidIn)
{
	LPCTSTR lpszIn = (LPTSTR)pVoidIn;
	if(!pVoidIn)
		return 0L;
	if(!pVoidOut)
		return -1L;

	CString strOut;
	strOut.Format("%02x", lpszIn);
	strcpy((LPTSTR)pVoidOut, (LPCTSTR)strOut);
	return strOut.GetLength();
}

static LONG CharToHex(void* pVoidOut, int nInSize, void* pVoidIn, BOOL bTrimSpace)
{
	BYTE* pByte = (BYTE*)pVoidIn;
	BYTE* pByteOut = (BYTE*)pVoidOut;
	if(!pByteOut)
	{
		return nInSize / 2;
	}
	else
	{
		int i;
		if(bTrimSpace)
		{
			BYTE* pBuf;
			if(pByte[nInSize - 1] == 0x20)
			{
				pBuf = new BYTE[nInSize / 3 + 1];
				for(i = 0; i < nInSize / 3; i ++)
				{
					BYTE b1 = isalpha(pByte[3 * i]) ?
						pByte[3 * i] - 0x37 : pByte[3 * i] - 0x30;
					BYTE b2 = isalpha(pByte[3 * i + 1]) ?
						pByte[3 * i + 1] - 0x37 : pByte[3 * i + 1] - 0x30;
					b1 <<= 4;
					b1 |= b2;
					pBuf[i] = b1;
				}
			}
			else
			{
				pBuf = new BYTE[(nInSize + 1) / 3 + 1];
				for(i = 0; i < (nInSize + 1) / 3; i ++)
				{
					BYTE b1 = isalpha(pByte[3 * i]) ?
						pByte[3 * i] - 0x37 : pByte[3 * i] - 0x30;
					BYTE b2 = isalpha(pByte[3 * i + 1]) ?
						pByte[3 * i + 1] - 0x37 : pByte[3 * i + 1] - 0x30;
					b1 <<= 4;
					b1 |= b2;
					pBuf[i] = b1;
				}
			}
			memcpy(pByteOut, pBuf, i);
			delete pBuf;
		}
		else
		{
			BYTE* pBuf = new BYTE[nInSize / 2 + 1];
			for(i = 0; i < nInSize / 2; i ++)
			{
				BYTE b1 = isalpha(pByte[2 * i]) ?
					pByte[2 * i] - 0x37 : pByte[2 * i] - 0x30;
				BYTE b2 = isalpha(pByte[2 * i + 1]) ?
					pByte[2 * i + 1] - 0x37 : pByte[2 * i + 1] - 0x30;
				b1 <<= 4;
				b1 |= b2;
				pBuf[i] = b1;
			}
			memcpy(pByteOut, pBuf, i);
			delete pBuf;
		}

		return i;
	}
}

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCustomFileDlg dialog

class CCustomFileDlg : public CFileDialog
{
	DECLARE_DYNAMIC(CCustomFileDlg)

public:
	CCustomFileDlg(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
		LPCTSTR lpszDefExt = NULL,
		LPCTSTR lpszFileName = NULL,
		DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		LPCTSTR lpszFilter = NULL,
		CWnd* pParentWnd = NULL);

	void SetFileTitle(LPCTSTR lpszTitle) {strcpy(m_szFileTitle, (LPCTSTR)lpszTitle);}

protected:
	//{{AFX_MSG(CCustomFileDlg)
	virtual BOOL OnInitDialog();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
// CCustomFileDlg

IMPLEMENT_DYNAMIC(CCustomFileDlg, CFileDialog)

CCustomFileDlg::CCustomFileDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
		DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
		CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
}


BEGIN_MESSAGE_MAP(CCustomFileDlg, CFileDialog)
	//{{AFX_MSG_MAP(CCustomFileDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CCustomFileDlg::OnInitDialog() 
{
	if(CFileDialog::OnInitDialog() == TRUE) {
		HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
		CWnd* pParent = GetParent();
		if(pParent != NULL) {  // null in NT 3.51
		// there's a phantom parent dialog -- gotta use it
			pParent->SetIcon(hIcon, TRUE);			// Set big icon
			pParent->SetIcon(hIcon, FALSE);		// Set small icon
		}
		return TRUE;
	}
	return FALSE;
}


/////////////////////////////////////////////////////////////////////////////
// CComMon_SERIALDlg dialog

const int WM_INITINTERFACE = WM_USER + 1001;

CComMon_SERIALDlg::CComMon_SERIALDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CComMon_SERIALDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CComMon_SERIALDlg)
	m_sSelCom1 = _T("");
	m_sSelBaud1 = _T("");
	m_sSelParity1 = _T("");
	m_sSelDatabit1 = _T("");
	m_sSelStopbit1 = _T("");
	m_sSelCom2 = _T("");
	m_sSelBaud2 = _T("");
	m_sSelParity2 = _T("");
	m_sSelDatabit2 = _T("");
	m_sSelStopbit2 = _T("");
	m_sRESnd1 = _T("");
	m_sRERcv1 = _T("");
	m_sRERcv2 = _T("");
	m_sRESnd2 = _T("");
	m_sComState1 = _T("關(guān) 閉");
	m_sComState2 = _T("關(guān) 閉");
	m_nRecvBytes1 = 0;
	m_nRecvBytes2 = 0;
	m_nSendBytes1 = 0;
	m_nSendBytes2 = 0;
	m_nSendCycle1 = 1000;
	m_nSendCycle2 = 1000;
	m_nBufSize = 512;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_aPorts.SetSize(0);
	m_aByteRcv1.SetSize(0);
	m_aByteSnd1.SetSize(0);
	m_aByteRcv2.SetSize(0);
	m_aByteSnd2.SetSize(0);
	m_bClock1_Open = FALSE;
	m_bClock2_Open = FALSE;
	AfxInitRichEdit();
}

CComMon_SERIALDlg::~CComMon_SERIALDlg()
{
	for(int i = 0; i < m_aPorts.GetSize(); i ++)
	{
		if(AfxIsValidAddress(m_aPorts.GetAt(i), sizeof(CSerialPort)))
		{
			delete (CSerialPort *)m_aPorts.GetAt(i);
		}
	}
}

void CComMon_SERIALDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CComMon_SERIALDlg)
	DDX_Control(pDX, IDC_RERECV2, m_reRecv2);
	DDX_Control(pDX, IDC_RERECV1, m_reRecv1);
	DDX_Control(pDX, IDC_RESEND2, m_reSend2);
	DDX_Control(pDX, IDC_RESEND1, m_reSend1);
	DDX_Control(pDX, IDC_ESENDCYCLE2, m_eSendCycle2);
	DDX_Control(pDX, IDC_ESENDCYCLE1, m_eSendCycle1);
	DDX_Control(pDX, IDC_CHECK_NORCV, m_chNotRecv);
	DDX_Control(pDX, IDC_CTRANSMIT_1AND2, m_chTransmit1And2);
	DDX_Control(pDX, IDC_CSENDHEX2, m_chSendHex2);
	DDX_Control(pDX, IDC_CSENDHEX1, m_chSendHex1);
	DDX_Control(pDX, IDC_CAUTOSND2, m_chAutoSnd2);
	DDX_Control(pDX, IDC_CAUTOSND1, m_chAutoSnd1);
	DDX_Control(pDX, IDC_CRECVHEX2, m_chRcvHex2);
	DDX_Control(pDX, IDC_CRECVHEX1, m_chRcvHex1);
	DDX_Control(pDX, IDC_CAUTONLINE2, m_chAutoNLine2);
	DDX_Control(pDX, IDC_CAUTONLINE1, m_chAutoNLine1);
	DDX_Control(pDX, IDC_CSELCHECKBIT2, m_cSelParity2);
	DDX_Control(pDX, IDC_CSELCHECKBIT1, m_cSelParity1);
	DDX_Control(pDX, IDC_CSELCOM2, m_cSelCom2);
	DDX_Control(pDX, IDC_CSELCOM1, m_cSelCom1);
	DDX_Control(pDX, IDC_CSELSTOPBIT2, m_cSelStopbit2);
	DDX_Control(pDX, IDC_CSELSTOPBIT1, m_cSelStopbit1);
	DDX_Control(pDX, IDC_CSELDATABIT2, m_cSelDatabit2);
	DDX_Control(pDX, IDC_CSELDATABIT1, m_cSelDatabit1);
	DDX_Control(pDX, IDC_CSELBAUD2, m_cSelBaud2);
	DDX_Control(pDX, IDC_CSELBAUD1, m_cSelBaud1);
	DDX_Control(pDX, IDC_BSTARTCOM2, m_bstartcom2);
	DDX_Control(pDX, IDC_BSTARTCOM1, m_startcom1);
	DDX_Control(pDX, IDC_BSEND2, m_bSend2);
	DDX_Control(pDX, IDC_BSEND1, m_bSend1);
	DDX_CBString(pDX, IDC_CSELBAUD2, m_sSelBaud2);
	DDX_CBString(pDX, IDC_CSELDATABIT1, m_sSelDatabit1);
	DDX_CBString(pDX, IDC_CSELDATABIT2, m_sSelDatabit2);
	DDX_CBString(pDX, IDC_CSELSTOPBIT2, m_sSelStopbit2);
	DDX_CBString(pDX, IDC_CSELCOM1, m_sSelCom1);
	DDX_CBString(pDX, IDC_CSELCOM2, m_sSelCom2);
	DDX_CBString(pDX, IDC_CSELBAUD1, m_sSelBaud1);
	DDX_CBString(pDX, IDC_CSELCHECKBIT1, m_sSelParity1);
	DDX_CBString(pDX, IDC_CSELCHECKBIT2, m_sSelParity2);
	DDX_CBString(pDX, IDC_CSELSTOPBIT1, m_sSelStopbit1);
	DDX_Text(pDX, IDC_RESEND1, m_sRESnd1);
	DDX_Text(pDX, IDC_RERECV1, m_sRERcv1);
	DDX_Text(pDX, IDC_RERECV2, m_sRERcv2);
	DDX_Text(pDX, IDC_RESEND2, m_sRESnd2);
	DDX_Text(pDX, IDC_ECOMSTATE1, m_sComState1);
	DDX_Text(pDX, IDC_ECOMSTATE2, m_sComState2);
	DDX_Text(pDX, IDC_ERECVBYTE1, m_nRecvBytes1);
	DDX_Text(pDX, IDC_ERECVBYTE2, m_nRecvBytes2);
	DDX_Text(pDX, IDC_ESENDBYTE1, m_nSendBytes1);
	DDX_Text(pDX, IDC_ESENDBYTE2, m_nSendBytes2);
	DDX_Text(pDX, IDC_ESENDCYCLE1, m_nSendCycle1);
	DDX_Text(pDX, IDC_ESENDCYCLE2, m_nSendCycle2);
	DDX_Text(pDX, IDC_EBUFSIZE, m_nBufSize);
	DDV_MinMaxUInt(pDX, m_nBufSize, 16, 65536);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CComMon_SERIALDlg, CDialog)
	//{{AFX_MSG_MAP(CComMon_SERIALDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_OK, OnCOK)
	ON_BN_CLICKED(IDC_CANCEL, OnCCancel)
	ON_BN_CLICKED(IDC_BSTARTCOM1, OnStartCom1)
	ON_BN_CLICKED(IDC_BSTARTCOM2, OnStartCom2)
	ON_BN_CLICKED(IDC_BSEND1, OnSend1)
	ON_BN_CLICKED(IDC_BSEND2, OnSend2)
	ON_BN_CLICKED(IDC_CTRANSMIT_1AND2, OnTransmit_1AND2)
	ON_BN_CLICKED(IDC_CAUTORCVSND1, OnAutoRcvSnd1)
	ON_BN_CLICKED(IDC_CAUTORCVSND2, OnAutoRcvSnd2)
	ON_CBN_EDITCHANGE(IDC_CSELCOM1, OnEditchangeCom1)
	ON_CBN_EDITCHANGE(IDC_CSELBAUD1, OnEditchangeBaud1)
	ON_CBN_EDITCHANGE(IDC_CSELDATABIT1, OnEditchangeDatabit1)
	ON_CBN_EDITCHANGE(IDC_CSELCHECKBIT1, OnEditchangeCheckbit1)
	ON_CBN_EDITCHANGE(IDC_CSELSTOPBIT1, OnEditchangeStopbit1)
	ON_CBN_EDITCHANGE(IDC_CSELCOM2, OnEditchangeCom2)
	ON_CBN_EDITCHANGE(IDC_CSELBAUD2, OnEditchangeBaud2)
	ON_CBN_EDITCHANGE(IDC_CSELDATABIT2, OnEditchangeDatabit2)
	ON_CBN_EDITCHANGE(IDC_CSELCHECKBIT2, OnEditchangeCheckbit2)
	ON_CBN_EDITCHANGE(IDC_CSELSTOPBIT2, OnEditchangeStopbit2)
	ON_CBN_SELCHANGE(IDC_CSELCHECKBIT1, OnSelchangeSelCheckbit1)
	ON_CBN_SELCHANGE(IDC_CSELBAUD1, OnSelchangeSelBaud1)
	ON_CBN_SELCHANGE(IDC_CSELBAUD2, OnSelchangeSelBaud2)
	ON_CBN_SELCHANGE(IDC_CSELCHECKBIT2, OnSelchangeSelCheckbit2)
	ON_CBN_SELCHANGE(IDC_CSELCOM1, OnSelchangeSelCom1)
	ON_CBN_SELCHANGE(IDC_CSELCOM2, OnSelchangeSelCom2)
	ON_CBN_SELCHANGE(IDC_CSELDATABIT1, OnSelchangeSelDatabit1)
	ON_CBN_SELCHANGE(IDC_CSELDATABIT2, OnSelchangeSelDatabit2)
	ON_CBN_SELCHANGE(IDC_CSELSTOPBIT1, OnSelchangeSelStopbit1)
	ON_CBN_SELCHANGE(IDC_CSELSTOPBIT2, OnSelchangeSelStopbit2)
	ON_BN_CLICKED(IDC_BCLEARRCV1, OnClearRcv1)
	ON_BN_CLICKED(IDC_BCLEARSND1, OnClearSnd1)
	ON_BN_CLICKED(IDC_BCLEARRCV2, OnClearRcv2)
	ON_BN_CLICKED(IDC_BCLEARSND2, OnClearSnd2)
	ON_BN_CLICKED(IDC_BCLEARCOUNT1, OnClearCount1)
	ON_BN_CLICKED(IDC_BCLEARCOUNT2, OnClearCount2)
	ON_WM_SHOWWINDOW()
	ON_WM_TIMER()
	ON_EN_CHANGE(IDC_ESENDCYCLE1, OnChangeESendCycle1)
	ON_EN_CHANGE(IDC_ESENDCYCLE2, OnChangeESendCycle2)
	ON_EN_CHANGE(IDC_RESEND1, OnChangeRESend1)
	ON_EN_CHANGE(IDC_RESEND2, OnChangeRESend2)
	ON_NOTIFY(EN_SELCHANGE, IDC_RESEND1, OnSelChangeRESend1)
	ON_BN_CLICKED(IDC_BSAVEDATA1, OnSaveData1)
	ON_BN_CLICKED(IDC_BSAVEDATA2, OnSaveData2)
	ON_BN_CLICKED(IDC_CAUTONLINE1, OnAutoNLine1)
	ON_BN_CLICKED(IDC_CAUTONLINE2, OnAutoNLine2)
	ON_BN_CLICKED(IDC_CAUTOSND1, OnAutoSnd1)
	ON_BN_CLICKED(IDC_CAUTOSND2, OnAutoSnd2)
	ON_BN_CLICKED(IDC_OK, OnOK)
	ON_BN_CLICKED(IDC_CANCEL, OnCancel)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_INITINTERFACE, OnInitInterface)
	ON_MESSAGE(WM_COMM_EVENT, OnCommEvent)
	ON_MESSAGE(WM_COMM_RXCHAR, OnComRXChars)
	ON_MESSAGE(WM_COMM_ERROR, OnCommError)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CComMon_SERIALDlg message handlers

BOOL CComMon_SERIALDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	m_reSend1.SendMessage(EM_SETEVENTMASK, 0, ENM_UPDATE | ENM_CHANGE | ENM_SELCHANGE);
	m_reSend2.SendMessage(EM_SETEVENTMASK, 0, ENM_UPDATE | ENM_CHANGE | ENM_SELCHANGE);
	m_reRecv1.SendMessage(EM_SETEVENTMASK, 0, ENM_UPDATE | ENM_CHANGE | ENM_SELCHANGE);
	m_reRecv2.SendMessage(EM_SETEVENTMASK, 0, ENM_UPDATE | ENM_CHANGE | ENM_SELCHANGE);

	// init the ports
	int j = 0;
	for (int i = 0; i < 256; i++)
	{
		CSerialPort* pSerialPort = new CSerialPort;
		if (pSerialPort->InitPort(this, i + 1, i == 0 ? 9600 : 19200))
		{
			if(!j)
			{
				j = i + 1;
			}
			CString sCom;
			sCom.Format("COM%d", i + 1);
			m_cSelCom1.AddString(sCom);
			m_cSelCom2.AddString(sCom);
			pSerialPort->SetComName(sCom);
			pSerialPort->ClosePort();
			m_aPorts.Add(pSerialPort);
		}
		else
		{
			delete pSerialPort;
		}
	}

	if(j)
	{
		m_cSelCom1.SetCurSel(0);
		m_cSelParity1.SetCurSel(0);
		m_cSelDatabit1.SetCurSel(0);
		m_cSelStopbit1.SetCurSel(0);
		for(int i = 0; m_cSelBaud1.GetCount(); i ++)
		{
			CString sLB;
			m_cSelBaud1.GetLBText(i, sLB);
			if(sLB == "9600")
			{
				m_cSelBaud1.SetCurSel(i);
				break;
			}
		}
		if(m_cSelCom2.GetCount() > 1)
		{
			m_cSelCom2.SetCurSel(1);
			m_cSelParity2.SetCurSel(0);
			m_cSelDatabit2.SetCurSel(0);
			m_cSelStopbit2.SetCurSel(0);
			for(i = 0; m_cSelBaud2.GetCount(); i ++)
			{
				CString sLB;
				m_cSelBaud2.GetLBText(i, sLB);
				if(sLB == "9600")
				{
					m_cSelBaud2.SetCurSel(i);
					break;
				}
			}
		}
		m_cSelDatabit1.SetCurSel(m_cSelDatabit1.GetCount() - 1);
		m_cSelDatabit2.SetCurSel(m_cSelDatabit2.GetCount() - 1);
	}
	PostMessage(WM_INITINTERFACE);
	m_bComNO1_Open = FALSE;
	m_bComNO2_Open = FALSE;
	m_chRcvHex1.SetCheck(1);
	m_chSendHex1.SetCheck(1);
	m_chRcvHex2.SetCheck(1);
	m_chSendHex2.SetCheck(1);

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CComMon_SERIALDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CComMon_SERIALDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
	UpdateData();
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CComMon_SERIALDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CComMon_SERIALDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CDialog::OnShowWindow(bShow, nStatus);
	
}

void CComMon_SERIALDlg::OnCOK() 
{
	LookupSerialState();
	CDialog::OnOK();
}

void CComMon_SERIALDlg::OnCCancel() 
{
	LookupSerialState();
	CDialog::OnCancel();
}

void CComMon_SERIALDlg::OnStartCom1() 
{
	UpdateData();
	int i = m_cSelCom1.GetCurSel();
	if(((CSerialPort*)m_aPorts[i])->GetComName() == m_sSelCom1)
	{
		static BOOL bStart = FALSE;
		if(bStart)
		{
			((CSerialPort *)m_aPorts[i])->NeedThreadStopping(FALSE);
			((CSerialPort *)m_aPorts[i])->ClosePort();
			m_cSelBaud1.EnableWindow();
			m_cSelCom1.EnableWindow();
			m_cSelDatabit1.EnableWindow();
			m_cSelStopbit1.EnableWindow();
			m_cSelParity1.EnableWindow();
			SetDlgItemText(IDC_BSTARTCOM1, "打開串口");
			m_sComState1 = "關(guān) 閉";
			if(m_chAutoSnd1.GetCheck())
				KillTimer(CLOCK1);
			m_chAutoSnd1.SetCheck(0);
			m_chAutoSnd1.EnableWindow(FALSE);
			m_eSendCycle1.EnableWindow(FALSE);
			m_chTransmit1And2.SetCheck(0);
			m_chTransmit1And2.EnableWindow(FALSE);
			m_bClock1_Open = FALSE;
			m_bComNO1_Open = FALSE;
		}
		else
		{
			CString sComName;
			int nPos = -1;
			m_cSelCom1.GetWindowText(sComName);
			sComName.MakeUpper();
			if((nPos = sComName.Find("COM")) == -1) return;
			char* sComNo;
			char* sComTemp = strdup(sComName);
			sComNo = sComTemp + lstrlen("COM");
			((CSerialPort *)m_aPorts[i])->NeedThreadStopping(TRUE);
			if(!((CSerialPort *)m_aPorts[i])->InitPort(this, atoi(sComNo), atoi(m_sSelBaud1),
				m_sSelParity1[0], atoi(m_sSelDatabit1), atoi(m_sSelStopbit1)))
			{
				delete sComTemp;
				return;
			}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区18| 91精品国模一区二区三区| 日韩精品一区二| 五月综合激情日本mⅴ| 色综合久久99| 国产精品人妖ts系列视频| 国产在线精品国自产拍免费| 日韩一区二区中文字幕| 免费观看91视频大全| 日韩免费高清视频| 在线看日本不卡| 午夜a成v人精品| 国产精品电影一区二区三区| 91丨九色porny丨蝌蚪| 国产精品国产成人国产三级| 日韩一级精品视频在线观看| 91国产福利在线| 欧美a级理论片| 亚洲一区二区成人在线观看| 精品视频一区二区三区免费| 奇米影视在线99精品| 亚洲综合av网| 1000精品久久久久久久久| 欧美日韩国产精选| 国产剧情一区在线| 樱桃国产成人精品视频| 欧美精品免费视频| 成人丝袜18视频在线观看| 亚洲美女视频在线观看| 欧美一级高清大全免费观看| 欧美亚洲尤物久久| 精品中文字幕一区二区小辣椒| 国产女同互慰高潮91漫画| 色拍拍在线精品视频8848| 成人精品小蝌蚪| 高清在线成人网| 午夜天堂影视香蕉久久| 一区二区高清视频在线观看| 精品99久久久久久| 99国产精品国产精品久久| 日韩精品福利网| 中文字幕日本乱码精品影院| 亚洲国产精品精华液2区45| 欧美视频在线不卡| 欧美日韩在线不卡| 欧美精品丝袜中出| 欧美高清性hdvideosex| 91精品国产高清一区二区三区 | 亚洲另类色综合网站| 国产精品国产a级| 国产精品久久久久7777按摩| 综合久久综合久久| 久久女同互慰一区二区三区| 在线免费精品视频| 欧美日韩国产高清一区二区| 欧美日韩的一区二区| 在线综合视频播放| 欧美tk—视频vk| 欧美日韩国产一区| 日韩欧美aaaaaa| 久久久久99精品国产片| 国产亚洲成年网址在线观看| 日韩视频一区二区在线观看| 久久在线免费观看| 日韩丝袜情趣美女图片| 欧美精品一区在线观看| 中文字幕欧美日韩一区| 亚洲精品国产一区二区精华液 | 国产成人综合在线观看| 免费观看日韩av| 国产精品伊人色| 91小视频免费观看| 91精品蜜臀在线一区尤物| 久久综合九色综合97婷婷| 亚洲欧洲精品一区二区精品久久久 | 日韩中文字幕一区二区三区| 紧缚奴在线一区二区三区| www.欧美.com| 成人网页在线观看| 欧美日韩三级在线| 久久一留热品黄| 亚洲男人天堂一区| 久久精品国产**网站演员| 免费欧美高清视频| 成人av电影在线| 97se亚洲国产综合在线| 51午夜精品国产| 国产精品欧美久久久久一区二区| 亚洲狠狠爱一区二区三区| 亚洲午夜电影在线观看| 久久国产成人午夜av影院| 91美女在线观看| 欧美电影免费观看高清完整版 | 在线成人午夜影院| 国产精品毛片久久久久久久 | 粉嫩绯色av一区二区在线观看| 欧美性猛交xxxxxxxx| 国产亚洲成年网址在线观看| 午夜av一区二区三区| 不卡高清视频专区| 欧美mv日韩mv亚洲| 亚洲成va人在线观看| 婷婷综合久久一区二区三区| 国产99久久久精品| 日韩一区二区在线看片| 亚洲男人天堂av| 懂色av一区二区三区免费观看 | 精品精品国产高清a毛片牛牛 | 久久久国产一区二区三区四区小说 | 成人av午夜电影| 日韩精品一区在线观看| 亚洲伊人伊色伊影伊综合网 | 欧美日本视频在线| 亚洲欧美在线另类| 国产剧情一区在线| 精品蜜桃在线看| 日韩国产一区二| 国产经典欧美精品| 日韩久久免费av| 丝袜美腿一区二区三区| 在线视频一区二区免费| 中文字幕日韩精品一区| 国产·精品毛片| 久久一区二区三区国产精品| 麻豆精品久久久| 99re热这里只有精品视频| 国产视频在线观看一区二区三区 | 中文字幕一区不卡| 福利一区福利二区| 久久久久久久久久久久久久久99| 免费观看久久久4p| 日韩欧美一二区| 美女任你摸久久| 日韩欧美国产麻豆| 久久成人麻豆午夜电影| 日韩一区二区视频在线观看| 免费国产亚洲视频| 欧美不卡一区二区三区| 老司机精品视频一区二区三区| 91精品国产91久久综合桃花| 日韩成人一区二区三区在线观看| 欧美精品丝袜久久久中文字幕| 午夜影院久久久| 欧美一区二区在线观看| 男男视频亚洲欧美| 欧美成人猛片aaaaaaa| 精品在线免费观看| 337p粉嫩大胆色噜噜噜噜亚洲| 久久99精品国产.久久久久| 久久影院午夜论| 不卡视频在线看| 亚洲图片欧美色图| 欧美一级高清片| 国产精品91xxx| 综合电影一区二区三区 | 91一区二区三区在线播放| 亚洲视频一二三| 欧美日韩一区小说| 蜜臀av一级做a爰片久久| 久久亚洲私人国产精品va媚药| 福利一区在线观看| 亚洲精品精品亚洲| 日韩一区二区在线播放| 国产精品自在欧美一区| 自拍偷拍国产亚洲| 欧美人狂配大交3d怪物一区| 久久国产三级精品| 国产精品久久久久aaaa| 国产片一区二区| 欧美综合色免费| 黄网站免费久久| 欧美性色综合网| 美女高潮久久久| 中文字幕一区二区在线观看| 欧美三区免费完整视频在线观看| 日本伊人精品一区二区三区观看方式| 久久久午夜精品| 在线日韩一区二区| 精品一区二区三区久久| 亚洲人妖av一区二区| 欧美一区二区三区婷婷月色| 国产成人av一区二区三区在线观看| 亚洲色图制服丝袜| 欧美成人精品高清在线播放| 91丝袜美腿高跟国产极品老师| 日韩国产精品久久久久久亚洲| 国产精品美女久久久久高潮| 91精品国产综合久久小美女| 成人午夜av影视| 美女脱光内衣内裤视频久久网站 | 国产精品自拍一区| 亚洲国产视频在线| 中文字幕国产精品一区二区| 欧美日本视频在线| 99麻豆久久久国产精品免费| 老司机精品视频线观看86| 一区二区国产盗摄色噜噜| 久久久久久97三级| 91精品麻豆日日躁夜夜躁| 色综合久久久久久久|