Cobol - Lectura de puertos serie con rmcobol

 
Vista:

Lectura de puertos serie con rmcobol

Publicado por jordin (1 intervención) el 26/08/2005 09:24:06
Buenas.
Si alguien sabe como leer lo que me entra por un puerto serie le agradeceria mucho que me lo diga. Si bien en rmcobol con w98 lo haciaa llamando con un call a unas rutinas externas .exe ahora desde w2000 rmcobol v7 i cobol-wow no me funcionan.
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

Leer datos de un puerto serie en Windows 2000

Publicado por Alejandro (300 intervenciones) el 06/09/2023 21:58:40
Para leer datos de un puerto serie en un programa COBOL en Windows 2000, puedes considerar el uso de las funciones de lectura de puerto serie proporcionadas por Windows. Aquí tienes una guía básica sobre cómo hacerlo:

1. Abrir el puerto serie: Utiliza la función `CreateFile` para abrir el puerto serie. Debes especificar el nombre del puerto serie (por ejemplo, "COM1" o "COM2") y configurar los parámetros de comunicación, como la velocidad de transmisión (baud rate) y el formato de los datos.

2. Configurar la comunicación serie: Utiliza la función `DCB` para configurar los parámetros de comunicación, como el baud rate, bits de datos, bits de parada, etc.

3. Lectura de datos: Utiliza la función `ReadFile` para leer datos del puerto serie. Los datos leídos se almacenarán en un búfer que puedes procesar en tu programa COBOL.

4. Cierre del puerto serie: Cuando hayas terminado de leer datos, asegúrate de cerrar el puerto serie utilizando la función `CloseHandle`.

Aquí hay un ejemplo en COBOL de cómo podrías implementar esto:

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
45
46
47
48
49
50
IDENTIFICATION DIVISION.
       PROGRAM-ID. SerialPortReader.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 hComPort           PIC 9(9) COMP VALUE 0.
       01 Buffer             PIC X(255).
       01 BytesRead          PIC S9(9) COMP VALUE 0.
       01 PortName           PIC X(10) VALUE "COM1".  -- Cambia a tu puerto serie específico.
 
       PROCEDURE DIVISION.
           CALL 'KERNEL32' USING BY VALUE "CreateFileA"
                                   BY REFERENCE PortName
                                   BY VALUE (GENERIC_READ + GENERIC_WRITE)
                                   BY VALUE 0
                                   BY VALUE OPEN_EXISTING
                                   BY VALUE 0
                                   BY VALUE 0
           RETURNING hComPort.
 
           IF hComPort NOT = -1
               CALL 'KERNEL32' USING BY VALUE "SetupComm"
                                       BY REFERENCE hComPort
                                       BY VALUE 1024
                                       BY VALUE 1024
 
               CALL 'KERNEL32' USING BY VALUE "SetCommState"
                                       BY REFERENCE hComPort
                                       BY REFERENCE DCB-Data.
 
               CALL 'KERNEL32' USING BY VALUE "PurgeComm"
                                       BY REFERENCE hComPort
                                       BY VALUE (PURGE_TXABORT + PURGE_RXABORT + PURGE_TXCLEAR + PURGE_RXCLEAR)
 
               CALL 'KERNEL32' USING BY VALUE "ReadFile"
                                       BY REFERENCE hComPort
                                       BY REFERENCE Buffer
                                       BY VALUE 255
                                       BY REFERENCE BytesRead
                                       BY VALUE 0
                                       BY VALUE 0
           ELSE
               DISPLAY "Error al abrir el puerto serie."
           END-IF.
 
           CALL 'KERNEL32' USING BY VALUE "CloseHandle"
                                   BY REFERENCE hComPort.
 
           STOP RUN.

Asegúrate de ajustar los parámetros según tus necesidades específicas y el puerto serie que estés utilizando. Además, ten en cuenta que este ejemplo utiliza llamadas a funciones de Windows a través de "CALL 'KERNEL32'" para interactuar con el puerto serie. Puedes adaptar este código según tu entorno de desarrollo COBOL.
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