簡體   English   中英

在Windows 7上連接到高於10的COM端口時出現無效的句柄錯誤

[英]Invalid handle error when connecting to COM port higher than 10 on Windows 7

我開發了一個簡單的串行端口應用程序,適用於低於10的COM端口(COM9,COM8,... COM1)。 但是當我的設備連接到高於10的端口(例如COM11)時,它沒有連接,我得到一個INVALID_HANDLE。 我的代碼是:

comport = CreateFileA(comPortName.toAscii(), GENERIC_READ|GENERIC_WRITE,
                      FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

if(comport == INVALID_HANDLE_VALUE)
{
    //Write exception code here
    connectionStatus = CONNECTION_STATUS_DISCONNECTED;
}

我的代碼出了什么問題? 有什么解決方案嗎?

要到達COM端口> = 10,您可以使用驅動程序的符號鏈接。 例如,對於COM10,它是\\\\\\\\.\\\\COM10

你試一試:

comport = CreateFileA("\\\\.\\COM10", GENERIC_READ|GENERIC_WRITE,
                  FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

if(comport == INVALID_HANDLE_VALUE)
{
    // Write exception code here
    connectionStatus = CONNECTION_STATUS_DISCONNECTED;
}

當然,這也適用於COM端口<10。

您需要在COM端口名稱前加上“\\\\。\\”,因此它應該類似於:

  CreateFileA("\\\\.\\COM10", ... )

來源: HOWTO:指定大於COM9的串行端口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM