www.gusucode.com > 多线程的VC++串口通讯实例-源码程序 > 多线程的VC++串口通讯实例-源码程序\code\Fabc.cpp

    // Fabc.cpp : implementation file
// Download by http://www.NewXing.com

#include "stdafx.h"
#include "mscomabc.h"
#include "Fabc.h"
#include "CMscom.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFabc
CCMscom mscom;
IMPLEMENT_DYNCREATE(CFabc, CFormView)

CFabc::CFabc()
	: CFormView(CFabc::IDD)
{
	//{{AFX_DATA_INIT(CFabc)
	m_read = _T("");
	m_write = _T("");
	//}}AFX_DATA_INIT
}

CFabc::~CFabc()
{
	mscom.CloseConnection();
}

void CFabc::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFabc)
	DDX_Control(pDX, IDC_BUTTON2, m_openport);
	DDX_Control(pDX, IDC_COMBO3, m_ctrlDataBits);
	DDX_Control(pDX, IDC_COMBO4, m_ctrlBaud);
	DDX_Control(pDX, IDC_COMBO5, m_ctrlStopBits);
	DDX_Control(pDX, IDC_COMBO2, m_ctrlParity);
	DDX_Control(pDX, IDC_COMBO1, m_ctrlPort);
	DDX_Text(pDX, IDC_EDIT2, m_read);
	DDX_Text(pDX, IDC_EDIT1, m_write);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFabc, CFormView)
	//{{AFX_MSG_MAP(CFabc)
	ON_BN_CLICKED(IDC_BUTTON1, Onsend)
	ON_BN_CLICKED(IDC_BUTTON2, OnButtonOpencom)
	ON_BN_CLICKED(IDC_BUTTON3, OnClosecom)
	ON_BN_CLICKED(IDC_BUTTON4, Onread)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFabc diagnostics

#ifdef _DEBUG
void CFabc::AssertValid() const
{
	CFormView::AssertValid();
}

void CFabc::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFabc message handlers

void CFabc::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	//对对话框的显示情况进行初始化
	m_ctrlPort.AddString(_T("COM1"));
	m_ctrlPort.AddString(_T("COM2"));
	m_ctrlPort.SetWindowText(_T("COM1"));

	m_ctrlParity.AddString(_T("NONE"));
	m_ctrlParity.AddString(_T("EVEN"));
	m_ctrlParity.AddString(_T("ODD"));
//	m_ctrlParity.SetCurSel(m_nParity);
    m_ctrlParity.SetWindowText(_T("NONE"));
	
	m_ctrlDataBits.AddString(_T("5"));
	m_ctrlDataBits.AddString(_T("6"));
	m_ctrlDataBits.AddString(_T("7"));
	m_ctrlDataBits.AddString(_T("8"));
	m_ctrlDataBits.SetWindowText(_T("8"));
	
	m_ctrlBaud.AddString(_T("300"));
	m_ctrlBaud.AddString(_T("600"));
	m_ctrlBaud.AddString(_T("1200"));
	m_ctrlBaud.AddString(_T("2400"));
	m_ctrlBaud.AddString(_T("9600"));
	m_ctrlBaud.AddString(_T("14400"));
	m_ctrlBaud.AddString(_T("19200"));
	m_ctrlBaud.AddString(_T("38400"));
	m_ctrlBaud.AddString(_T("57600"));
    m_ctrlBaud.SetWindowText(_T("9600"));
	
	m_ctrlStopBits.AddString(_T("1"));
	m_ctrlStopBits.AddString(_T("1.5"));
	m_ctrlStopBits.AddString(_T("2"));
    m_ctrlStopBits.SetWindowText(_T("1"));

//	m_ctrlStopBits.SetCurSel(m_nStopBits);
//	GetDlgItem(IDC_PORT)->EnableWindow(!m_bConnected);
//	return TRUE;  
//-----------------------------------------------------
	
		

}

void CFabc::Onsend() //---------------发送
{
	char buff[200];//,buff2[200]
	CString ss;
    DWORD l,k;
	UpdateData(true);
	l=m_write.GetLength();
	memcpy(buff,m_write,l);
    UpdateData(false);
	k=mscom.WriteComm(buff,l);

//---------------------------------------------
 /*   
    k=mscom.ReadComm(buff2,l);
	buff2[l]='\0';
    m_read=(char *)buff2;
    UpdateData(false);
	*/
}

void CFabc::OnButtonOpencom() //打开串口
{
	CString str;
	char temp[10];
  
	mscom.OpenConnection(0);

    m_openport.EnableWindow(false);
}

void CFabc::OnClosecom() //关闭串口
{
	mscom.CloseConnection();
}

void CFabc::Onread() 
{
	char buff[200],buff2[200];
	CString ss;
    DWORD l,k;
    //int j;
	k=mscom.ReadComm(buff2,k);
	// buff2[0]=k;
	buff2[k]='\0';
    m_read=(char *)buff2;
	
    UpdateData(false);
}