C/Visual C - leer datos de un COM

 
Vista:

leer datos de un COM

Publicado por Mario (2 intervenciones) el 29/11/2002 10:30:04
habra manera de que pueda leer los datos que me estan llegando por el com1, y redireccionarlos a otra aplicacion por otro puerto????? si? como??? ojala me pudieran ayudar, gracias....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Redireccionar datos de COM1 a otra aplicación a través de otro puerto

Publicado por Alejandro (913 intervenciones) el 10/04/2025 22:12:59
Sí, Mario, es posible redireccionar datos de un puerto COM a otro en Windows. Aquí te presento un enfoque general utilizando C/C++ y la API de Windows para manejar la comunicación serie. A continuación, se describen los pasos básicos:

1. Abrir el puerto COM1:
Utiliza la función `CreateFile` para abrir el puerto COM1 y configurar sus parámetros.

2. Leer datos del puerto COM1:
Usa `ReadFile` para leer los datos que llegan al puerto.

3. Abrir el segundo puerto COM:
Abre el segundo puerto (por ejemplo, COM2) de la misma manera.

4. Escribir datos en el segundo puerto:
Utiliza `WriteFile` para enviar los datos leídos del COM1 al COM2.

Aquí tienes un ejemplo básico de cómo podría verse el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <windows.h>
#include <stdio.h>
 
void redirectCOMData() {
    HANDLE hCom1, hCom2;
    DWORD bytesRead, bytesWritten;
    char buffer[256];
 
    // Abrir COM1
    hCom1 = CreateFile("COM1", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hCom1 == INVALID_HANDLE_VALUE) {
        printf("Error al abrir COM1\n");
        return;
    }
 
    // Abrir COM2
    hCom2 = CreateFile("COM2", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hCom2 == INVALID_HANDLE_VALUE) {
        printf("Error al abrir COM2\n");
        CloseHandle(hCom1);
        return;
    }
 
    // Leer datos de COM1 y escribir en COM2
    while (1) {
        if (ReadFile(hCom1, buffer, sizeof(buffer), &bytesRead, NULL)) {
            if (bytesRead > 0) {
                WriteFile(hCom2, buffer, bytesRead, &bytesWritten, NULL);
            }
        } else {
            printf("Error al leer de COM1\n");
            break;
        }
    }
 
    // Cerrar los puertos
    CloseHandle(hCom1);
    CloseHandle(hCom2);
}
 
int main() {
    redirectCOMData();
    return 0;
}

Consideraciones:


- Configuración de puertos: Asegúrate de que ambos puertos estén configurados correctamente (baud rate, paridad, bits de datos, etc.) antes de realizar la lectura y escritura.
- Manejo de errores: Implementa un manejo de errores adecuado para detectar problemas al abrir puertos o al leer/escribir datos.
- Permisos: Asegúrate de que tu aplicación tenga los permisos necesarios para acceder a los puertos COM.

Este código es un punto de partida y puede requerir ajustes según tus necesidades específicas y el entorno en el que estés trabajando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar