2017-09-04 3 views
0

シリアルポート(私の場合はCOM6)から読み込むC++プログラムを書いています。 COMポートを開く。私はいつもインターネットでこのコードを見つけました:C++ CreateFileでシリアルポートから読む

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; 
} 

は私が間違って何をしているのですか?

+0

再現できませんでした。どのIDE /コンパイラを使用していますか?適切なWindows SDKがインストールされていますか? – Ron

+0

私はデフォルトのVisual Studio 2017 IDE/Compilerを使用しています。私は設定で何も変更していない。 – User987123

+1

@ User987123設定を調整せずにVS'17をインストールすると、Windows SDKはインストールされません。設定を調整してもう一度お試しください。 – Blacktempel

答えて

1

プリコンパイル済みヘッダーを使用している場合は、#include "stdafx.h"までの行は、あらかじめコンパイル済みヘッダーの一部であるとみなされます。コンパイラはこれをスキップします。

#include "stdafx.h"は、常にの最初の#includeであることを確認してください。

+0

ありがとうございました。今それは働いています:) – User987123

2

設定を調整せずにVS'17をインストールした場合、Windows SDKはインストールされません。

VS'17のインストールを再確認し、適切なWindows SDKをインストールしてください。

+0

https://stackoverflow.com/questions/44325182/cant-change-windows-sdk-version-in-visual-studio-c-project一部のWindows SDKのスクリーンショットがあります。 – Blacktempel

+0

私はWindows7を使用していますが、Visual Studioインストーラでは、WindowsのSDKのみをインストールできます。どうしたらいいですか? – User987123

+0

@ User987123最新の10または8.1をインストールします。現在、あなたが必要とするものを正確に伝えることができません。 Windows 7で動作します。 – Blacktempel

関連する問題