#include <windows.h>
#include <iostream>
int main() {
// Configuración del puerto serie
HANDLE hSerial;
hSerial = CreateFile(L"COM1", // Nombre del puerto serie
GENERIC_READ | GENERIC_WRITE, // Acceso de lectura y escritura
0, // No compartir
NULL, // Sin seguridad
OPEN_EXISTING, // Abrir puerto existente
0, // Sin atributos
NULL); // Sin plantilla
if (hSerial == INVALID_HANDLE_VALUE) {
std::cerr << "Error al abrir el puerto serie." << std::endl;
return 1;
}
// Configuración de la comunicación
DCB dcbSerialParams = {0};
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error al obtener el estado del puerto." << std::endl;
CloseHandle(hSerial);
return 1;
}
dcbSerialParams.BaudRate =CBR_9600; // Velocidad de baudios
dcbSerialParams.ByteSize = 8; // Tamaño de byte
dcbSerialParams.StopBits = ONESTOPBIT; // 1 bit de parada
dcbSerialParams.Parity = NOPARITY; // Sin paridad
if (!SetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error al configurar el puerto." << std::endl;
CloseHandle(hSerial);
return 1;
}
// Enviar el carácter '$'
DWORD bytesWritten;
char dataToSend = '$';
if (!WriteFile(hSerial, &dataToSend, sizeof(dataToSend), &bytesWritten, NULL)) {
std::cerr << "Error al enviar datos." << std::endl;
CloseHandle(hSerial);
return 1;
}
// Leer la respuesta
char receivedData;
DWORD bytesRead;
if (!ReadFile(hSerial, &receivedData, sizeof(receivedData), &bytesRead, NULL)) {
std::cerr << "Error al leer datos." << std::endl;
CloseHandle(hSerial);
return 1;
}
// Mostrar la respuesta
std::cout << "Respuesta recibida: " << receivedData << std::endl;
// Cerrar el puerto
CloseHandle(hSerial);
return 0;
}