Conexión de puerto Serie (RS-232) en C++


He hecho la conexión del puerto serie RS-232 en C++ usando el compilador de 16 bits (estaba usando Turbo C++ IDE). Incluía el archivo de cabecera bios.h que contiene todas las funciones necesarias para leer los valores del puerto. Ahora quiero leer el valor del puerto serie usando el compilador Mingw de 32 bits de C++. Estoy usando Dev CPP como mi IDE. Aquí no pude encontrar bios.h. ¿Hay algún archivo de encabezado especial disponible para este propósito en Mingw? Estoy usando compilador de 32 bits ahora porque en mi proyecto universitario tengo que usar Manejo de excepciones que supongo que no es compatible con Turbo C. Por favor, ayúdame.

Author: iammurtaza, 2013-04-03

1 answers

Por favor, echa un vistazo aquí:

1)Se puede utilizar con ventanas (incl. MinGW) así como Linux. Alternativa solo se puede utilizar el código como un ejemplo.

2)Tutorial paso a paso cómo usar puertos serie en windows

3)Puedes usar esto literalmente en MinGW

Aquí hay un código muy, muy simple (sin ningún manejo de errores o configuración):

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

Ahora puedes usar WriteFile() / ReadFile() para escribir / leer bytes. No olvides cerrar tu conexión:

CloseHandle(serialHandle);
 36
Author: ollo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-19 15:16:16