首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 串口通訊:CDemo1Dlg::connectSPort 成員函數的編寫與控件綁定

     編輯:程式設計綜合問答

在 MFC 對話框專案中實現串口通訊,通常會自訂一個成員函數(如 connectSPort)封裝 MSComm 控件初始化邏輯,並透過 DDX/DDV 機制將控件與變數綁定。

標準實作步驟

  1. 新增成員變數:在對話框類別(如 CDemo1Dlg)宣告 MSComm CommDriver;(需先在工具箱註冊 MSComm32.ocx 並拖放到對話框)。
  2. 建立控件綁定:Class Wizard → Member Variables → 選中 IDC_MSCOMM1 → Add Variable → Category: Control → Variable: m_comm(或直接用 CommDriver)。
  3. 編寫 connectSPort 函數:
    int CDemo1Dlg::connectSPort(int portNum) {
        CommDriver.put_CommPort(portNum);
        CommDriver.put_InputMode(1);           // 二進位模式
        CommDriver.put_InBufferSize(1024);
        CommDriver.put_OutBufferSize(512);
        CommDriver.put_Settings(_T("9600,n,8,1"));
        if (!CommDriver.get_PortOpen())
            CommDriver.put_PortOpen(TRUE);     // 開啟串口
    
        CommDriver.put_RThreshold(1);          // 收到 1 字元觸發 OnComm
        CommDriver.put_InputLen(0);
        CommDriver.get_Input();                // 清空殘留緩衝區
        return 0;
    }
  4. 處理 OnComm 事件:在對話框類別新增 OnCommMscomm1 訊息處理器,讀取 CommDriver.get_Input() 解析資料。

注意事項

  • MSComm 為 ActiveX 控件,需目標機安裝 MSCOMM32.OCX 並註冊(regsvr32)。
  • 串口參數(Baud rate、Parity、Data bits、Stop bits)必須與下位機完全一致。
  • 生產環境建議改用 CreateFile/ReadFile/WriteFile 原生 API 或第三方庫(如 Serial),穩定性更高。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved