5

我正在打开一个端口来与设备通信并控制设备,但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();
}

为什么会出现这个问题?

4

2 回答 2

7

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

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

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

于 2013-01-31T21:02:20.600 回答
1

尝试使用

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

_T强制将 szPort 保持为 ASCII。

于 2013-08-20T19:58:55.977 回答