⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vcnetcommdlg.cpp

📁 在wince环境下的控制蓝牙和pc主机传递数据的程序1.0版本
💻 CPP
字号:
// VCNetCommDlg.cpp : implementation file
//

#include "stdafx.h"
#include "VCNetComm.h"
#include "VCNetCommDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CVCNetCommDlg dialog

CVCNetCommDlg::CVCNetCommDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVCNetCommDlg::IDD, pParent)
	, m_nPortNum(2)
	, m_sSendData(_T(""))
	, m_bAutoClearSendData(FALSE)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CVCNetCommDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_EDIT_PORTNUM, m_nPortNum);
	DDX_Text(pDX, IDC_EDIT_SENDDATA, m_sSendData);
	DDX_Control(pDX, IDC_EDIT_RECVDATA, m_RecvDataEditCtrl);
	DDX_Check(pDX, IDC_CHECK_AUTOCLEAR, m_bAutoClearSendData);
}

BEGIN_MESSAGE_MAP(CVCNetCommDlg, CDialog)
#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
	ON_WM_SIZE()
#endif
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDC_BUTTON_OPENPORT, &CVCNetCommDlg::OnBnClickedButtonOpenport)
	ON_BN_CLICKED(IDC_BUTTON_SEND, &CVCNetCommDlg::OnBnClickedButtonSend)
	ON_BN_CLICKED(IDC_BUTTON_CLEAR, &CVCNetCommDlg::OnBnClickedButtonClear)
END_MESSAGE_MAP()


// CVCNetCommDlg message handlers

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

	// 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

#ifdef WIN32_PLATFORM_WFSP
	if (!m_dlgCommandBar.Create(this) ||
	    !m_dlgCommandBar.InsertMenuBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create CommandBar\n");
		return FALSE;      // fail to create
	}
#endif // WIN32_PLATFORM_WFSP
	// TODO: Add extra initialization here
	m_SerialPort.set_data_callback(OnDataFromPort,this);
	
	CComboBox *pBox;
	int index;
	pBox=(CComboBox *)GetDlgItem(IDC_COMBO_BAUDRATE);
	pBox->ResetContent();
	index=pBox->AddString(_T("9600"));
	pBox->SetItemData(index,CBR_9600);
	index=pBox->AddString(_T("19200"));
	pBox->SetItemData(index,CBR_19200);
	index=pBox->AddString(_T("38400"));
	pBox->SetItemData(index,CBR_38400);
	index=pBox->AddString(_T("57600"));
	pBox->SetItemData(index,CBR_57600);
	index=pBox->AddString(_T("115200"));
	pBox->SetItemData(index,CBR_115200);

	pBox->SetCurSel(4);

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

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CVCNetCommDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
	DRA::RelayoutDialog(
		AfxGetInstanceHandle(), 
		this->m_hWnd, 
		DRA::GetDisplayMode() != DRA::Portrait ? 
			MAKEINTRESOURCE(IDD_VCNETCOMM_DIALOG_WIDE) : 
			MAKEINTRESOURCE(IDD_VCNETCOMM_DIALOG));
}
#endif

/*
打开串口
*/
void CVCNetCommDlg::OnBnClickedButtonOpenport()
{
	UpdateData();
	if(m_SerialPort.IsOpen())
	{
		m_SerialPort.ClosePort();
		GetDlgItem(IDC_COMBO_BAUDRATE)->EnableWindow(TRUE);
		GetDlgItem(IDC_EDIT_PORTNUM)->EnableWindow(TRUE);
		GetDlgItem(IDC_BUTTON_OPENPORT)->SetWindowText(_T("Open"));
	}
	else
	{
		CComboBox *pBox;
		pBox=(CComboBox *)GetDlgItem(IDC_COMBO_BAUDRATE);
		m_SerialPort.m_lBaudRate=pBox->GetItemData(pBox->GetCurSel());
		if(m_SerialPort.OpenPort(m_nPortNum))
		{
			GetDlgItem(IDC_COMBO_BAUDRATE)->EnableWindow(FALSE);
			GetDlgItem(IDC_EDIT_PORTNUM)->EnableWindow(FALSE);
			GetDlgItem(IDC_BUTTON_OPENPORT)->SetWindowText(_T("Close"));
		}
		else
		{
			MessageBox(_T("Open Port Error"),_T("Info"),MB_ICONINFORMATION);
		}
	}
}

/*
从串口返回的数据
*/
void CVCNetCommDlg::OnDataFromPort(void * data, DWORD nDataCount,void * context)
{
	CVCNetCommDlg *pDlg;
	static DWORD count=0;
	pDlg=(CVCNetCommDlg *)context;
	char *buf;
	CString log;
	char tt[5];
	buf=(char *)data;
	for(DWORD i=0;i<nDataCount;i++)
	{
		sprintf(tt,"%02X ",(BYTE*)(buf[i] & 0xff));
		log+=tt;
		count++;
		if(count %10 ==0)
		{
			log+=_T("\r\n");
		}
	}
	pDlg->m_RecvDataEditCtrl.SetSel(pDlg->m_RecvDataEditCtrl.GetWindowTextLength(),pDlg->m_RecvDataEditCtrl.GetWindowTextLength());
	pDlg->m_RecvDataEditCtrl.ReplaceSel(log);
}

/*
发送数据
*/
void CVCNetCommDlg::OnBnClickedButtonSend()
{
	char * pszANSIString;
	int len;
	UpdateData();
//	m_sSendData=_T("hello");
	len=m_sSendData.GetLength()*2;
	pszANSIString=(char *)malloc(len);
	memset(pszANSIString,0,len);
	WideCharToMultiByte ( CP_ACP, 
                          WC_COMPOSITECHECK,
                          m_sSendData.GetBuffer(0),
                          -1, 
                          pszANSIString,
                          len,
                          NULL,
                          NULL);

	len=m_SerialPort.WriteData((BYTE *)pszANSIString,strlen(pszANSIString));
	if(m_bAutoClearSendData)
	{
		m_sSendData=_T("");
	}
//	m_nSendCount+=len;
	
	free(pszANSIString);

/*	CString tmp;
	tmp.Format(_T("%d"),m_nSendCount);
	m_SendCountCtrl.SetWindowText(tmp);*/
	UpdateData(FALSE);
}

void CVCNetCommDlg::OnBnClickedButtonClear()
{
	m_sSendData=_T("");
	m_RecvDataEditCtrl.SetWindowText(_T(""));
	UpdateData(FALSE);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -