Ver la Versión Completa : [Sintaxis] Dll puerto serie
drvedia1981
28 de julio de 2018, 02:09
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
void *comPort = ComPortCreate();
SetDeviceName(comPort, (PChar)L"COM2");
SetBaudRate(comPort, br9600);
SetDataBits(comPort, db8);
SetStopBits(comPort, sb1);
SetParity(comPort, paNone);
Open(comPort);
WriteAnsiString(comPort, "Hello!\n");
Sleep(3000);
while (InputCount(comPort) > 0)
putchar(ReadAnsiChar(comPort));
Close(comPort);
ComPortDestroy(comPort);
return 0;
}
Kuk
28 de julio de 2018, 22:50
drvedia1981, aquí tienes el ejemplo del primer CALL:
WORKING-STORAGE SECTION.
01 PTR-comPort POINTER.
01 PTR-comPort-N REDEFINES PTR-comPort PIC S9(9) COMP-5.
PROCEDURE DIVISION.
CALL "SetDeviceName" WITH STDCALL USING BY REFERENCE PTR-comPort-N
BY CONTENT "COM2"
No te olvides de mapear las funciones en COBOL85.CBR: [Aporte] CALL de cualquier DLL sin *.LIB ni "LoadLibrary" - COBOL Foro (https://www.cobolforo.es/showthread.php?t=216)
drvedia1981
30 de julio de 2018, 16:33
Hola kuk si tengo el .lib tambien tengo que declarar en el cobol85.cbr ? gracias Saludos.
Kuk
30 de julio de 2018, 20:31
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.
drvedia1981
31 de julio de 2018, 00:53
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.
[MainForm.Entry]
SetDeviceName=ComPort.dll
Copie tu ejemplo y cuando compila aparece este error que podra ser ? Saludos.
MainForm.obj : error LNK2001: unresolved external symbol _SETDEVICENAME@8
C:\serie232\Debug\Main.exe : fatal error LNK1120: 1 unresolved externals
Kuk
31 de julio de 2018, 07:57
drvedia1981, como pone en el ejemplo, tienes que hacer CALL dinámico. Es decir, meter el nombre de la función en una varibale.
MOVE "InvalidateRect" TO FUNC
CALL FUNC WITH STDCALL USING ...
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.