點擊「開啟串口」按鈕彈出錯誤對話框,無法建立連線。
龔建偉老師的 CSerialPort 範例中,下拉框預設只列出 COM1~COM4。若使用者選擇的索引超出範圍(如未選擇、或系統實際埠號為 COM5 以上),InitPort 會因無效埠號回傳失敗。
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);
}
}
int idx = m_ctrlComboComPort.GetCurSel();
if (idx == CB_ERR) { AfxMessageBox(_T("請先選擇串口")); return; }
int port = idx + 1; // 對應 COM1...