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

MFC 串口類 CSerialPort 開啟失敗:埠號超出範圍或未選擇

     編輯:程式設計綜合問答

錯誤現象

點擊「開啟串口」按鈕彈出錯誤對話框,無法建立連線。

根本原因

龔建偉老師的 CSerialPort 範例中,下拉框預設只列出 COM1~COM4。若使用者選擇的索引超出範圍(如未選擇、或系統實際埠號為 COM5 以上),InitPort 會因無效埠號回傳失敗。

修正方法

  1. 動態枚舉系統現有串口:
    
    CString str;
    for (int i = 1; i <= 256; ++i) {
        str.Format(_T("COM%d"), i);
        HANDLE h = CreateFile(str, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
        if (h != INVALID_HANDLE_VALUE) {
            m_ctrlComboComPort.AddString(str);
            CloseHandle(h);
        }
    }
    
  2. 開啟前檢查選擇索引:
    
    int idx = m_ctrlComboComPort.GetCurSel();
    if (idx == CB_ERR) { AfxMessageBox(_T("請先選擇串口")); return; }
    int port = idx + 1; // 對應 COM1...
    
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved