Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL
Fujitsu COBOL Sub-Foro dedicado a Compiladores e IDE-s de Fujitsu.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Imprimir en una impresora puerto USB (Linux) dariodr GnuCOBOL (OpenCOBOL) 3 4 de diciembre de 2018 17:19
[Duda] Leer puerto RS232 desde PowerCobol v9 Jovimabo PowerCOBOL (ActiveX, v4 - v11) 13 18 de octubre de 2016 16:00
[Sintaxis] Capturar Puerto Serial Juanes RM/COBOL 2 19 de julio de 2016 12:03
[Sintaxis] Númerro de serie del Disco Duro Roger PowerCOBOL (ActiveX, v4 - v11) 3 10 de septiembre de 2015 00:04
[PowerCOBOL] Obtener numero de serie del Disco Duro (HDD) Hrmcobol Cocina PowerCOBOL 0 17 de abril de 2015 15:59

Respuesta
 
Herramientas

  #1
Antiguo 28 de julio de 2018, 02:09
drvedia1981
Forero
Última Actividad 17.05.2022 22:45
Posts Posts: 66
Likes enviados Enviados: 3
Likes recibidos Recibidos: 9
Predeterminado Dll puerto serie
0 Inactivo Inactivo

Hola tengo para probar una dll de manejo de puertos serie baje la .dll y .lib alguin me ayuda a pasar el ejemplo en C a power cobol v7 muchas gracias Saludos

Codigo en C ejemplo de la dll

Código CPP:
  1. void *comPort = ComPortCreate();
  2.    
  3.     SetDeviceName(comPort, (PChar)L"COM2");
  4.     SetBaudRate(comPort, br9600);
  5.     SetDataBits(comPort, db8);
  6.     SetStopBits(comPort, sb1);
  7.     SetParity(comPort, paNone);
  8.     Open(comPort);
  9.  
  10.     WriteAnsiString(comPort, "Hello!\n");
  11.  
  12.     Sleep(3000);
  13.  
  14.     while (InputCount(comPort) > 0)
  15.         putchar(ReadAnsiChar(comPort));
  16.  
  17.     Close(comPort);
  18.     ComPortDestroy(comPort);
  19.     return 0;
  20. }
drvedia1981 is offline   Responder Con Cita
  #2
Antiguo 28 de julio de 2018, 22:50
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

drvedia1981, aquí tienes el ejemplo del primer CALL:

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.  01  PTR-comPort                         POINTER.
  3.  01  PTR-comPort-N REDEFINES PTR-comPort PIC S9(9) COMP-5.
  4.  
  5.  PROCEDURE DIVISION.
  6.  
  7.      CALL "SetDeviceName" WITH STDCALL USING BY REFERENCE PTR-comPort-N
  8.                                              BY CONTENT "COM2"
  9.      
  10.      
No te olvides de mapear las funciones en COBOL85.CBR: [Aporte] CALL de cualquier DLL sin *.LIB ni "LoadLibrary" - COBOL Foro



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 30 de julio de 2018, 16:33
drvedia1981
Forero
Última Actividad 17.05.2022 22:45
Posts Posts: 66
Likes enviados Enviados: 3
Likes recibidos Recibidos: 9

Hola kuk si tengo el .lib tambien tengo que declarar en el cobol85.cbr ? gracias Saludos.
drvedia1981 is offline   Responder Con Cita
  #4
Antiguo 30 de julio de 2018, 20:31
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

drvedia1981, no si tienes una LIB no es necesario.

Entonces lo que querías era un ejemplo de cómo llamar las funciones de esa DLL. El ejemplo que te puse es el que necesitas.

Lo único, no líes con los BY VALUE, BY REFERENCE y BY CONTENT.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #5
Antiguo 31 de julio de 2018, 00:53
drvedia1981
Forero
Última Actividad 17.05.2022 22:45
Posts Posts: 66
Likes enviados Enviados: 3
Likes recibidos Recibidos: 9

Hola Kuk gracias por la respuesta puse como me dijiste en la primer respuesta con solo el .dll y los datos en COBOL85 y la dll en el mismo directorio.
Código:
[MainForm.Entry]
SetDeviceName=ComPort.dll
Copie tu ejemplo y cuando compila aparece este error que podra ser ? Saludos.

Código:
MainForm.obj : error LNK2001: unresolved external symbol _SETDEVICENAME@8
C:\serie232\Debug\Main.exe : fatal error LNK1120: 1 unresolved externals
drvedia1981 is offline   Responder Con Cita
  #6
Antiguo 31 de julio de 2018, 07:57
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

drvedia1981, como pone en el ejemplo, tienes que hacer CALL dinámico. Es decir, meter el nombre de la función en una varibale.

Código COBOL:
  1.      MOVE "InvalidateRect" TO FUNC
  2.      
  3.      CALL FUNC WITH STDCALL USING ...



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:46.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.