我打开一个端口与设备通信并控制设备,但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();
}
为什么会出现此问题?
答案 0 :(得分:7)
问题是您没有为串行端口指定lpFileName
的正确值。你应该使用这种格式:
"\\\\.\\COM%d"
这将导致字符串看起来像\\.\COM1
,这是正确的格式。
答案 1 :(得分:1)
尝试使用
char *szPort = _T("COM1"); // Change port number to your unused existing port
_T
强制将szPort保持为ASCII格式。