C++ 使用 CreateFile 从串行端口读取

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

我正在编写一个 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;
}

我做错了什么?

最佳答案

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

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

关于C++ 使用 CreateFile 从串行端口读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46031167/

相关文章:

android - 发布到 Facebook 墙时出错

java - BGS5T RS232 与 1 线传感器通信

javascript - 为什么 Emscripten 会为添加到分配的 Float32Array 中的某些数字抛出错误?

使用Outlook发送电子邮件的C++算法

c++ - 交叉兼容系统时间库

python - 我可以提高此 Python 代码的性能吗?

python - 有没有办法找到给定VM的资源组,然后使用Python sdk找到Azure中VM的详细信息

java - AWS Elasticache SDK 不适用于 Redis ElastiCache

c - 使用 radio 调制解调器可以使用的最快、可靠的波特率是多少?

c - 用于通过有损串行链路重传的用户模式 ​​TCP 堆栈