程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> VC++下用MSComm控件實現串口通訊

VC++下用MSComm控件實現串口通訊

編輯:C++入門知識
首先,在對話框中創建通信控件,若Control工具欄中缺少該控件,可通過菜單Project --> Add to Project --> Components and Control插入即可,再將該控件從工具箱中拉到對話框中。此時,你只需要關心控件提供的對 Windows 通訊驅動程序的 API 函數的接口。 <!-- frame contents --> <!-- /frame contents --> 換句話說,只需要設置和監視MSComm控件的屬性和事件。 打開所需串口後,需要考慮串口通信的時機。在接收或發送數據過程中,可能需要監視並響應一些事件和錯誤,所以事件驅動是處理串行端口交互作用的一種非常有效的方法。使用 OnComm 事件和 CommEvent 屬性捕捉並檢查通訊事件和錯誤的值。發生通訊事件或錯誤時,將觸發 OnComm 事件,CommEvent 屬性的值將被改變,應用程序檢查 CommEvent 屬性值並作出相應的反應 // 若是在SDI中使用該控件則要調用下兩句,在對話框程序中該語句有MFC自己創建
  // 所以不用人為添加
  DWord style=WS_VISIBLE;
  m_MSComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM1);
  // 串口控件的初始化
  DWORD style=WS_VISIBLE;
  m_MSComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM1);
  if(m_MSComm.GetPortOpen()) //假如串口是打開的,則行關閉串口
  {
   m_MSComm.SetPortOpen(FALSE);
  }
  m_MSComm.SetCommPort(1); //選擇COM1
  m_MSComm.SetInBufferSize(1024); //接收緩沖區
  m_MSComm.SetOutBufferSize(1024);//發送緩沖區
  m_MSComm.SetInputLen(0);//設置當前接收區數據長度為0,表示全部讀取
  m_MSComm.SetInputMode(1);//以二進制方式讀寫數據
  m_MSComm.SetRThreshold(1);//接收緩沖區有1個及1個以上字符時,將引發接收數據的OnComm事件
  m_MSComm.SetSettings("9600,n,8,1");//波特率9600無檢驗位,8個數據位,1個停止位
  if(!m_MSComm.GetPortOpen())//假如串口沒有打開則打開
   m_MSComm.SetPortOpen(TRUE);//打開串口
  else
   m_MSComm.SetOutBufferCount(0);
  // 控件事件的響應聲明
  // *.h
  //{{AFX_MSG(CGolfView)
  afx_msg BOOL OnComm();
  DECLARE_EVENTSINK_MAP()
  /
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved