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); }