WRAPPER - TAPI - DEVLINK

ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

WRAPPER - TAPI - DEVLINK

Post 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]
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post 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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Post by ARC »

Genial!

Muchísimas gracias.

Vamos a realizar las acciones que comentas y vemos.

Un saludo
ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Así no es correcto.

Daba algún warning o error al compilar mi código ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Añade esta línea y vuelve a intentarlo:

...
#include <Windows.h>
#include <hbapi.h>
...
regards, saludos

Antonio Linares
www.fivetechsoft.com
ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Prueba esto y dime que aparece usando mi código:

MsgInfo( CALLBACKFUNCTION() )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Muéstrame tambien que parámetros le estais pasando concretamente a la llamada a DLOpen()
regards, saludos

Antonio Linares
www.fivetechsoft.com
ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Que valor está devolviendo DLOpen() ?

MsgInfo( DLOpen( ... ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
ARC
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Comprueba si se genera un archivo *.log
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 42660
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 69 times
Been thanked: 96 times
Contact:

Re: WRAPPER - TAPI - DEVLINK

Post by Antonio Linares »

Comenta la llamada a MessageBox():

// MessageBox( 0, "ok", "ok", 0 );

y comprueba si así aparece el MsgInfo()
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply