Ich habe eine serielle RS-232-Verbindung in C++ mit einem 16-Bit-Compiler hergestellt (ich habe Turbo C++ IDE verwendet). Es enthielt eine Header-Datei bios.h
, Die alle erforderlichen Funktionen zum Lesen von Werten aus dem Port enthält. Jetzt möchte ich den Wert von der seriellen Schnittstelle mit dem C++ - 32-Bit-Mingw-Compiler lesen. Ich benutze Dev CPP als meine IDE. Hier konnte ich bios.h
Nicht finden. Gibt es spezielle Header-Dateien für diesen Zweck in Mingw? Ich verwende jetzt 32-Bit-Compiler, weil ich in meinem College-Projekt die Ausnahmebehandlung verwenden muss, die in Turbo C vermutlich nicht unterstützt wird. Bitte helfen Sie mir.
Bitte schauen Sie hier:
1) Sie können dies sowohl unter Windows (inkl. MinGW) als auch unter Linux verwenden. Alternativ können Sie nur den Code als Beispiel verwenden.
2) Schritt-für-Schritt-Anleitung zur Verwendung von seriellen Schnittstellen unter Windows
3) Sie können dies buchstäblich auf MinGW verwenden
Hier ist ein sehr, sehr einfacher Code (ohne Fehlerbehandlung oder Einstellungen):
#include <windows.h>
/* ... */
// Open serial port
HANDLE serialHandle;
serialHandle = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
// Do some basic settings
DCB serialParams = { 0 };
serialParams.DCBlength = sizeof(serialParams);
GetCommState(serialHandle, &serialParams);
serialParams.BaudRate = baudrate;
serialParams.ByteSize = byteSize;
serialParams.StopBits = stopBits;
serialParams.Parity = parity;
SetCommState(serialHandle, &serialParams);
// Set timeouts
COMMTIMEOUTS timeout = { 0 };
timeout.ReadIntervalTimeout = 50;
timeout.ReadTotalTimeoutConstant = 50;
timeout.ReadTotalTimeoutMultiplier = 50;
timeout.WriteTotalTimeoutConstant = 50;
timeout.WriteTotalTimeoutMultiplier = 10;
SetCommTimeouts(serialHandle, &timeout);
Jetzt können Sie mit WriteFile()
/ReadFile()
Bytes schreiben/lesen. Vergiss nicht, deine Verbindung zu beenden:
CloseHandle(serialHandle);