C ++使用CreateFile从串口读取

时间:2017-09-04 06:07:49

标签: 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;
}

我做错了什么?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

因此,请确保#include "stdafx.h"始终是第一个 #include