Page 1 of 3
WRAPPER - TAPI - DEVLINK
Posted: Tue Sep 04, 2018 9:41 am
by ARC
Buenos dias
Estamos tratando de conectar con la centralita telefonica AVAYA usando DEVLINK y la libreria DEVLINK.DLL
Con esta llamada tratamos de inicar la comunicacion
Code: Select all | Expand
DLL32 function DLOpen( pbxh AS DWORD , ;
pbx_address AS LPSTR,;
pbx_password AS LPSTR,;
reserved1 AS LPSTR,;
reserved2 AS LPSTR,;
cb AS COMMSEVENT ) AS LONG PASCAL FROM "DLOpen" lib "devLink.dll"
Nuestro problema es con el parametro "cb AS COMMSEVENT" segun la documentacion, es una funcion de CALLBACK, no sabemos como recoger o tratarlo.En la documentacion esta funcion viene referenciada asi
[img]
https://ibb.co/nzg4ue[/img]
[img]
https://ibb.co/dQew7z[/img]
La documentacion completa esta en esta URL
[url]
https://downloads.avaya.com/elmodocs2/i ... dlopen.htm[/url]
Re: WRAPPER - TAPI - DEVLINK
Posted: Tue Sep 04, 2018 9:15 pm
by Antonio Linares
Adrian,
Ese parámetro es un puntero a una función en C. Un puntero es un número, que es la "dirección" de esa función.
La dirección de una función en lenguaje C es su nombre.
Aqui tienes un ejemplo:
Code: Select all | Expand
// vuestro PRG. Añadid esto al final
#pragma BEGINDUMP
#include <Windows.h>
void CallBackFunction( LONG pbxh, DWORD comms_state, DWORD parm1 )
{
MessageBox( 0, "ok", "ok", 0 );
}
HB_FUNC( CALLBACKFUNCTION )
{
hb_retnl( ( LONG ) CallBackFunction );
}
#pragma ENDDUMP
En la declaración de la función que habeis creado cambiad cb AS COMMSEVENT por cb AS LONG y
llamadla asi:
DLOpen( ..., ..., ..., ..., ..., CallBackFunction() )
Si lo habeis hecho bien,
aparecerá un MessageBox() de Windows. Una vez llegueis ahi, os explico como
continuar

Re: WRAPPER - TAPI - DEVLINK
Posted: Wed Sep 05, 2018 8:22 am
by ARC
Genial!
Muchísimas gracias.
Vamos a realizar las acciones que comentas y vemos.
Un saludo
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 7:06 am
by ARC
Buenos días Antonio
Hemos tenido que dejar así las llamadas a las funciones
Code: Select all | Expand
#pragma BEGINDUMP
#include <Windows.h>
LONG CallBackFunction( LONG pbxh, DWORD comms_state, DWORD parm1 )
{
MessageBox( 0, "ok", "ok", 0 );
hb_retnl(1);
}
HB_FUNC( CALLBACKFUNCTION )
{
LONG pbxh ;
DWORD cmms ;
DWORD par ;
hb_retnl( ( LONG ) CallBackFunction(pbxh,cmms,par ) );
}
#pragma ENDDUMP
Sino, no nos mostraba la llamada al MessageBox.
A partir de aquí , por favor, cuando puedas indícanos como continuar para capturar los eventos que devuelve esta función.
Muchas gracias por tu tiempo.
Un saludo.
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 7:32 am
by Antonio Linares
Así no es correcto.
Daba algún warning o error al compilar mi código ?
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 7:49 am
by ARC
Buenos dias.
Si, da estos warning
Warning W8057 ORDREP.prg 157: Parameter 'pbxh' is never used in function CallBackFunction
Warning W8057 ORDREP.prg 157: Parameter 'comms_state' is never used in function CallBackFunction
Warning W8057 ORDREP.prg 157: Parameter 'parm1' is never used in function CallBackFunction
Warning W8065 ORDREP.prg 161: Call to function 'hb_retnl' with no prototype in function HB_FUN_CALLBACKFUNCTION
Code: Select all | Expand
DLOpen(... , ... , ... , ... , ... , CallBackFunction() )
DLL32 function DLOpen( pbxh AS DWORD , ;
pbx_address AS LPSTR,;
pbx_password AS LPSTR,;
reserved1 AS LPSTR,;
reserved2 AS LPSTR,;
cb AS LONG ) AS LONG PASCAL FROM "DLOpen" lib "devLink.dll"
#pragma BEGINDUMP
#include <Windows.h>
void CallBackFunction( LONG pbxh, DWORD comms_state, DWORD parm1 )
{
MessageBox( 0, "ok", "ok", 0 );
}
HB_FUNC( CALLBACKFUNCTION )
{
hb_retnl( ( LONG ) CallBackFunction );
}
#pragma ENDDUMP
Al ejecutarlo, no nos mostraba nunca el messageBox.
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 8:42 am
by Antonio Linares
Añade esta línea y vuelve a intentarlo:
...
#include <Windows.h>
#include <hbapi.h>
...
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 10:27 am
by ARC
Buenas,
ahora siguen saliendo las 3 primeros warning. Pero no nos saca el cuadro dialogo
Warning W8057 ORDREP.prg 158: Parameter 'pbxh' is never used in function CallBackFunction
Warning W8057 ORDREP.prg 158: Parameter 'comms_state' is never used in function CallBackFunction
Warning W8057 ORDREP.prg 158: Parameter 'parm1' is never used in function CallBackFunction
Si el MessageBox lo ponemos en la llamada primera de callbackfunction si lo muestra
Code: Select all | Expand
void CallBackFunction( LONG pbxh, DWORD comms_state, DWORD parm1 )
{
MessageBox( 0, "ok", "ok", 0 ); // AQUI NO MUESTRA EL CUADRO DIALOGO
}
HB_FUNC( CALLBACKFUNCTION )
{
MessageBox( 0, "ok", "ok", 0 ); // Aqui si muestra
hb_retnl( ( LONG ) CallBackFunction );
}
No consigue ejecutar la siguiente llamada a la función
Un saludo
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 10:51 am
by Antonio Linares
Prueba esto y dime que aparece usando mi código:
MsgInfo( CALLBACKFUNCTION() )
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 10:52 am
by Antonio Linares
Muéstrame tambien que parámetros le estais pasando concretamente a la llamada a DLOpen()
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 6:10 am
by ARC
Buenos dias!
Code: Select all | Expand
MsgInfo( CALLBACKFUNCTION() ) -> Devuelve el siguiente valor 4200408
La llamada a la funcion y sus parametros son estos
Code: Select all | Expand
DLOpen( 1 , cIp , cPass , nil , nil , CallBackFunction() )
Donde las variables cIp y cPass son tipo char
Un saludo
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 8:26 am
by Antonio Linares
Que valor está devolviendo DLOpen() ?
MsgInfo( DLOpen( ... ) )
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 8:55 am
by ARC
Hola!!
Nada no esta devolviendo nada, no muestra ni siquiera un cuadro dialogo, inicia ejecución y acaba sin dar error y sin mostrar nada.
Code: Select all | Expand
Function main()
local cIp := '10.10.10.10' //es un ejemplo
local cPass := 'passprueba'
MsgInfo( DLOpen(1,'','',nil,nil, CallBackFunction() ) )
return nil
#pragma BEGINDUMP
#include <Windows.h>
#include <hbapi.h>
void CallBackFunction( LONG pbxh, DWORD comms_state, DWORD parm1 )
{
MessageBox( 0, "ok", "ok", 0 );
}
HB_FUNC( CALLBACKFUNCTION )
{
hb_retnl( ( LONG ) CallBackFunction );
}
#pragma ENDDUMP
En el proyecto tengo incluidas las libs : DevLinkOmf.lib y DeLink.lib
En la raiz del proyecto esta devlink.dll
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 9:21 am
by Antonio Linares
Comprueba si se genera un archivo *.log
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 9:24 am
by Antonio Linares
Comenta la llamada a MessageBox():
// MessageBox( 0, "ok", "ok", 0 );
y comprueba si así aparece el MsgInfo()