1. 程式人生 > >MFC串列埠通訊(一)——MSComm控制元件簡介

MFC串列埠通訊(一)——MSComm控制元件簡介

Visual C++為我們提供了一種好用的ActiveX控制元件Microsoft Communications Control(即MSComm)來支援應用程式對串列埠的訪問,在應用程式中插入MSComm控制元件後就可以較為方便地實現對通過計算機串列埠收發資料。 要使用ActiveX控制元件MSComm,程式設計師必須將其新增入工程。使用MSCOMM的流程如下:

一、註冊MSCOMM

1、下載控制元件MSCOMM32.OCX(32位),mswnisck.ocx(64位)

2、把這個ocx檔案放在c盤WIndows的system32裡,開啟cmd執行:regsvr32 MSCOMM32.OCX(32位)

   把這個ocx檔案放在c盤WIndows的syswow64裡,開啟cmd執行:regsvr32 c:\windos\syswow\mswnisck.OCX(64位)

3、在圖形介面右鍵-》插入ActiveX控制元件,找到MS Communication控制元件,放在介面裡(是一個黃色電話)

二、開啟串列埠

m_mscomm.put__CommPort(1);//選擇串列埠
m_mscomm.put_InputMode(1);//二進位制方式讀寫資料
m_mscomm.put_InBufferSize(1024);//接收緩衝區大小,位元組
m_mscomm.put_OutBufferSize(1024);//傳送緩衝區大小,位元組
m_mscomm.put_Settings(_T("9600,n,8,1"));//9600波特率,8個數據位,1個停止位
m_mscomm.put_InputLen(0);//設定當前接收區資料長度為0,表示全部讀取
m_mscomm.put_RThreshold(1);//接收緩衝區有1個及1個以上字元時,將引發接收資料的OnComm
m_mscomm.put_PortOpen(TRUE);//開啟串列埠,如果開啟失敗,此函式會呼叫AfxMessageBox來顯示錯誤資訊,並返回

三、傳送資料

m_mscomm.put_Output((COleVariant)m_sendstr);//如果傳送失敗,此函式會呼叫AfxMessageBox提示錯誤資訊並返回

四、接收資料(基於事件驅動型,和中斷類似)

在圖形介面,右鍵MSComm控制元件,新增事件處理程式onComm,在函式裡:

VARIANT variant;
variant=m_mscomm.get_Input();//把接收緩衝區裡的資料放在variant結構體中,這個結構體裡有很多聯合體,資料應該放在其中一箇中
COleSafeArray colesafearray;//定義一個安全陣列,是為了下面處理資料
colesafearray = variant;//把返回值存放在這個安全數組裡
byte buf[512];//定義一個位元組資料
long len, k;
len = colesafearray.GetOneDimSize();//資料一共有多少位元組
for (k = 0; k < len; k++)
  colesafearray.GetElement(&k, buf + k);//把安全數組裡的資料轉移到位元組陣列buf中,方便列印
buf[len] = 0;//防止亂碼
AfxMessageBox((CString)buf);

五、關閉串列埠

m_mscomm.put_PortOpen(FALSE);

以下連結為串列埠通訊詳細例子:https://blog.csdn.net/kangshuaibing/article/details/84631698