Port série (RS -232) connexion en C++

J'ai fait une connexion serial port RS-232 en C++ en utilisant un compilateur 16 bits (J'utilisais Turbo C++ IDE). Il a inclus le fichier d'en-tête bios.h qui contient toutes les fonctions requises pour lire les valeurs du port. Maintenant, je veux lire la valeur du port série en utilisant le compilateur C++ 32 bits Mingw. J'utilise Dev CPP comme IDE. Ici, je ne pouvais pas trouver bios.h. Sont des fichiers d'en-tête disponible à cet effet dans Mingw? J'utilise maintenant le compilateur 32 bits parce que dans mon projet de collège, je dois utiliser Gestion des exceptions qui, je suppose, n'est pas prise en charge dans Turbo C. Aidez-moi.

23
demandé sur iammurtaza 2013-04-03 21:48:54

1 réponses

, Veuillez jeter un oeil ici:

1)Vous pouvez l'utiliser avec Windows (incl. MinGW) ainsi que Linux. Alternative vous ne pouvez utiliser le code que comme exemple.

2)étape par Étape tutoriel comment utiliser les ports série sur windows

3)Vous pouvez utiliser cette lettre sur MinGW

Voici un code très, très simple (sans aucune gestion d'erreur ou Paramètres):

#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);

Maintenant, vous pouvez utiliser WriteFile() / ReadFile() pour écrire / lire des octets. N'oubliez pas de fermer votre connexion:

CloseHandle(serialHandle);
36
répondu ollo 2016-05-19 15:16:16