连接到Windows 7上10的COM端口时,无效的手柄错误

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

本文关键字:无效 错误 COM Windows 连接      更新时间:2023-10-16

我已经开发了一个简单的串行端口应用程序,该应用程序与低于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 ports<10。

您需要对com端口名称进行预处先" \",因此应该是:

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

来源: howto:指定大于com9

的串行端口