【问题标题】:C++ Reading from a serial port with CreateFileC++ 使用 CreateFile 从串行端口读取
【发布时间】:2018-02-12 08:16:00
【问题描述】:

我正在编写一个 C++ 程序以从串行端口(在我的情况下为 COM6)读取。打开 COM 端口。我总是在网上找到这段代码:

HANDLE serialHandle;

serialHandle = CreateFile(L"COM6", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

我的问题是我收到以下错误:

  • 'HANDLE':找不到标识符
  • 'CreateFile':找不到标识符
  • 'GENERIC_READ':未声明的标识符
  • 'INVALID_HANDLE_VALUE':未声明的标识符
  • ...

我的代码:

#include <windows.h>
#include "stdafx.h"
#include <iostream>
#include <string>
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
using namespace std;


int main()
{
    /*int comPortNmr = 6, speed = 115200;
    cout << "Serial Line: > ";
    cin >> comPortNmr;
    cout << endl;
    cout << "Speed: > ";
    cin >> speed;
    cout << endl; */

    HANDLE serialHandle;
    // Open serial port
    serialHandle = CreateFile(L"COM6", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

    if (serialHandle == INVALID_HANDLE_VALUE)
    {
        cout << "Error." << endl;
    }
    else
    {
        cout << "Opend." << endl;
    }

    return 0;
}

我做错了什么?

【问题讨论】:

  • 无法重现。您使用的是什么 IDE/编译器?您是否安装了相应的 Windows SDK?
  • 我正在使用默认的 Visual Studio 2017 IDE / 编译器。我没有更改设置中的任何内容。
  • @User987123 如果您在不调整设置的情况下安装 VS'17,Windows SDK 将不会安装。请调整您的设置,然后重试。

标签: c++ sdk serial-port visual-studio-2017 createfile


【解决方案1】:

如果您在不调整设置的情况下安装 VS'17,Windows SDK 将不会安装。

请重新检查您的 VS'17 安装并安装适当的 Windows SDK。

【讨论】:

  • stackoverflow.com/questions/44325182/… 有一些 Windows SDK 的小截图。
  • 我使用的是 Windows7,但在 Visual Studio 安装程序中,我只能安装适用于 Windows 10 的 SDK。我现在该怎么办?
  • @User987123 安装最新的 10 或 8.1。目前无法准确判断您需要哪一个。它可以在 Windows 7 上运行。
  • 我已经安装了 SDK,并在项目设置中将其更改为新的 SDK 版本,但仍然无法正常工作。
【解决方案2】:

如果您使用的是预编译头文件,那么直到并包括行 #include "stdafx.h" 的任何内容都应该已经是预编译头文件的一部分。所以会被编译器跳过。

所以请确保#include "stdafx.h" 始终是第一个 #include

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多