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

时间:2013-01-31 20:54:22

标签: 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();
}

为什么会出现此问题?

2 个答案:

答案 0 :(得分:7)

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

"\\\\.\\COM%d"

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

答案 1 :(得分:1)

尝试使用

char *szPort = _T("COM1"); // Change port number to your unused existing port

_T强制将szPort保持为ASCII格式。