CreateFile返回错误INVALID_HANDLE_VALUE(对于COM端口),并且GetLastError返回"找不到指定的文件"

use*_*417 5 c++ winapi serial-port

我打开一个端口与设备通信并控制设备,但CreateFile()函数返回INVALID_HANDLE_VALUE.

GetLastError()返回2表示找不到指定的文件.

我的代码如下所示:

wsprintf( szPort, "COM%d", nPort );
m_hIDComDev = CreateFile(szPort,
                         GENERIC_READ | GENERIC_WRITE, 
                         0, 
                         NULL, 
                         OPEN_EXISTING, 
                         FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 
                         NULL);
if (m_hIDComDev == INVALID_HANDLE_VALUE)
{
    DWORD err=GetLastError();
}
Run Code Online (Sandbox Code Playgroud)

为什么会出现这个问题?

Ada*_*ras 7

问题是您没有lpFileName为串行端口指定正确的值.你应该使用这种格式:

"\\\\.\\COM%d"
Run Code Online (Sandbox Code Playgroud)

这将导致一个看起来像的字符串\\.\COM1,这是正确的格式.