#include <windows.h>
#include <stdio.h>
void imprimir(const char *mensaje) {
HANDLE hSerial;
DCB dcbSerialParams = {0};
COMMTIMEOUTS timeouts = {0};
// Abre el puerto COM1 (puedes cambiarlo según sea necesario)
hSerial = CreateFile("COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hSerial == INVALID_HANDLE_VALUE) {
printf("Error al abrir el puerto serial.\n");
return;
}
// Configura los parámetros del puerto
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
printf("Error al obtener el estado del puerto.\n");
CloseHandle(hSerial);
return;
}
dcbSerialParams.BaudRate = CBR_9600; // Configura la velocidad (9600 bps)
dcbSerialParams.ByteSize = 8; // Tamaño de byte
dcbSerialParams.StopBits = ONESTOPBIT; // 1 bit de parada
dcbSerialParams.Parity = NOPARITY; // Sin paridad
if (!SetCommState(hSerial, &dcbSerialParams)) {
printf("Error al configurar el puerto serial.\n");
CloseHandle(hSerial);
return;
}
// Configura los timeouts
timeouts.ReadIntervalTimeout = 50;
timeouts.ReadTotalTimeoutConstant = 50;
timeouts.ReadTotalTimeoutMultiplier = 10;
timeouts.WriteTotalTimeoutConstant = 50;
timeouts.WriteTotalTimeoutMultiplier = 10;
SetCommTimeouts(hSerial, &timeouts);
// Envía el mensaje a la impresora
DWORD bytesWritten;
if (!WriteFile(hSerial, mensaje, strlen(mensaje), &bytesWritten, NULL)) {
printf("Error al escribir en el puerto serial.\n");
}
// Cierra el puerto
CloseHandle(hSerial);
}
int main() {
const char *mensaje = "Hola, este es un mensaje de prueba.\n";
imprimir(mensaje);
return 0;
}