puertos
Publicado por jorge cote (2 intervenciones) el 24/05/2003 20:12:35
como programar un puerto serial en visual c++
Valora esta pregunta


0
#include <windows.h>
#include <iostream>
HANDLE hSerial;
hSerial = CreateFile("COM1", // Nombre del puerto
GENERIC_READ | GENERIC_WRITE, // Acceso
0, // Sin compartir
NULL, // Sin seguridad
OPEN_EXISTING, // Abrir existente
0, // Sin atributos
NULL); // Sin plantilla
if (hSerial == INVALID_HANDLE_VALUE) {
std::cerr << "Error al abrir el puerto serial." << std::endl;
return 1; // Manejo de error
}
DCB dcbSerialParams = {0};
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error al obtener el estado del puerto." << std::endl;
return 1; // Manejo de error
}
dcbSerialParams.BaudRate = CBR_9600; // Velocidad en baudios
dcbSerialParams.ByteSize = 8; // 8 bits de datos
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;
return 1; // Manejo de error
}
// Escribir datos
const char* dataToSend = "Hola, puerto serial!";
DWORD bytesWritten;
if (!WriteFile(hSerial, dataToSend, strlen(dataToSend), &bytesWritten, NULL)) {
std::cerr << "Error al escribir en el puerto." << std::endl;
}
// Leer datos
char buffer[256];
DWORD bytesRead;
if (!ReadFile(hSerial, buffer, sizeof(buffer), &bytesRead, NULL)) {
std::cerr << "Error al leer del puerto." << std::endl;
} else {
buffer[bytesRead] = '\0'; // Asegúrate de terminar la cadena
std::cout << "Datos recibidos: " << buffer << std::endl;
}
CloseHandle(hSerial);
#include <windows.h>
#include <iostream>
int main() {
HANDLE hSerial = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hSerial == INVALID_HANDLE_VALUE) {
std::cerr << "Error al abrir el puerto serial." << std::endl;
return 1;
}
DCB dcbSerialParams = {0};
dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
if (!GetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error al obtener el estado del puerto." << std::endl;
return 1;
}
dcbSerialParams.BaudRate = CBR_9600;
dcbSerialParams.ByteSize = 8;
dcbSerialParams.StopBits = ONESTOPBIT;
dcbSerialParams.Parity = NOPARITY;
if (!SetCommState(hSerial, &dcbSerialParams)) {
std::cerr << "Error al configurar el puerto." << std::endl;
return 1;
}
const char* dataToSend = "¡Hola, puerto serial!";
DWORD bytesWritten;
if (!WriteFile(hSerial, dataToSend, strlen(dataToSend), &bytesWritten, NULL)) {
std::cerr << "Error al escribir en el puerto." << std::endl;
}
char buffer[256];
DWORD bytesRead;
if (!ReadFile(hSerial, buffer, sizeof(buffer), &bytesRead, NULL)) {
std::cerr << "Error al leer del puerto." << std::endl;
} else {
buffer[bytesRead] = '\0';
std::cout << "Datos recibidos: " << buffer << std::endl;
}
CloseHandle(hSerial);
return 0;
}