C ++ COM端口打开,读取和写入

时间:2011-05-10 19:33:24

标签: c++ winapi serial-port createfile

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

请告诉我我做错了什么。

5 个答案:

答案 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");
    }