在Windows 7 x64上使用C和MinGW进行虚拟串行端口访问

时间:2012-05-01 17:00:39

标签: c winapi serial-port mingw

我正在尝试使用Windows 7 x64计算机上的MinGW与虚拟串行端口进行通信。根据设备管理器,我的设备在COM27处可用。我有这段代码:

#include <windows.h>
#include <stdio.h>

    int main()
    {
        HANDLE hComm;

        const WCHAR FileFullPath[] = {L"COM1"} ;


        hComm = CreateFile( (LPCTSTR)FileFullPath,
                            GENERIC_READ | GENERIC_WRITE,
                            0,
                            0,
                            OPEN_EXISTING,
                            FILE_FLAG_OVERLAPPED,
                            0);

        if (hComm == INVALID_HANDLE_VALUE) {
            printf("Invalid value: %d\r\n", GetLastError());
        }
    }

这给了我一个ERROR_FILE_NOT_FOUNDerror code 2)。输出:

Invalid value: 2

如果我将端口名称更改为COM1(我拥有的另一个端口),则无法创建错误1450或ERROR_NO_SYSTEM_RESOURCES的文件。

我做错了什么?我接受MinGW的替代品,这不是强制性的。

2 个答案:

答案 0 :(得分:2)

COM端口名称应为\\.\COM1(转义反斜杠后为\\\\.\\COM1),而不是COM1

答案 1 :(得分:0)

尝试CreateFile

使用Qt和mingw时遇到了同样的问题,更改CreateFile也适合我。我已经在使用“\\\\。\\ COM ??”