我正在尝试使用Win32的CreateFile函数打开一个COM端口。我已经在MSDN以及几个论坛上阅读过如何做到这一点的文档,但无论我做什么,我仍然会得到错误代码#2(端口不存在)。我目前的代码是:
m_hCom = CreateFile(
"\\.\COM10",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (m_hCom == INVALID_HANDLE_VALUE) {
int error = GetLastError();
return FALSE;
}
我正在使用Visual Studio 2010。
请告诉我我做错了什么。
答案 0 :(得分:3)
尝试添加一些额外的斜杠:
“\\\\。\\ COM10”
因为反斜杠是一个特殊字符,你必须在字符串中为每个字符插入两个。
答案 1 :(得分:0)
我建议编写一些迭代或列出可用COM端口的临时代码。
您的COM端口命名很可能不正确。
答案 2 :(得分:0)
我写了不久前你想写的相同代码。如果你说有一个第10个COM端口,那么只要你有额外的斜杠就可以工作。您可以尝试转到项目属性窗口并将字符集更改为多字节字符。祝你好运!
答案 3 :(得分:0)
试试这个:
CreateFile(L"COM1", ...);
答案 4 :(得分:0)
在C ++项目中运行以下代码,如果Comport让我们说COMPORT 4是由TeraTerm发出的,那么它会发回错误,否则会打开端口。
处理hComm;
hComm = CreateFile(
L" \\。\ COM4&#34 ;,
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if(hComm == INVALID_HANDLE_VALUE){
printf(" Comport关闭或被其他硬件/软件使用!\ n \ r");
}