0

我正在尝试使用 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。

请告诉我我做错了什么。

4

5 回答 5

3

尝试像这样添加一些额外的斜线:

“\\\\.\\COM10”

因为反斜杠是一个特殊字符,所以你必须在字符串中为每个你想要的字符插入两个。

于 2011-05-10T19:42:24.403 回答
0

尝试这个:

CreateFile(L"COM1", ...);
于 2015-02-20T17:31:04.160 回答
0

我建议编写一些临时代码来迭代或列出可用的 COM 端口。

很有可能您的 COM 端口命名不正确。

于 2011-05-10T19:43:39.400 回答
0

不久前,我编写了您尝试编写的相同代码。如果您说有第 10 个 COM 端口,那么只要您有多余的斜杠,它就应该可以工作。您可以尝试进入项目属性窗口并将字符集更改为多字节字符。祝你好运!

于 2011-05-14T04:04:53.187 回答
0

在 C++ 项目中运行以下代码,如果 Comport 假设 COMPORT 4 被 TeraTerm 占用,它会发回错误,否则会打开端口。

处理 hComm;
hComm = CreateFile(
L"\\.\COM4",
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (hComm == INVALID_HANDLE_VALUE) {
printf("Comport 已关闭或被其他硬件/软件占用!\n\r");
}

于 2017-04-06T17:39:35.333 回答