WRAPPER - TAPI - DEVLINK

WRAPPER - TAPI - DEVLINK

Postby ARC » Tue Sep 04, 2018 9:41 am

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 view

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]
ARC
 
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Tue Sep 04, 2018 9:15 pm

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 view

// 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
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby ARC » Wed Sep 05, 2018 8:22 am

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

Postby ARC » Thu Sep 06, 2018 7:06 am

Buenos días Antonio

Hemos tenido que dejar así las llamadas a las funciones

Code: Select all  Expand view

#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.
ARC
 
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Thu Sep 06, 2018 7:32 am

Así no es correcto.

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby ARC » Thu Sep 06, 2018 7:49 am

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 view


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.
ARC
 
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Thu Sep 06, 2018 8:42 am

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

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby ARC » Thu Sep 06, 2018 10:27 am

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 view


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
ARC
 
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Thu Sep 06, 2018 10:51 am

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: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Thu Sep 06, 2018 10:52 am

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby ARC » Fri Sep 07, 2018 6:10 am

Buenos dias!

Code: Select all  Expand view

MsgInfo( CALLBACKFUNCTION() ) -> Devuelve el siguiente valor 4200408
 


La llamada a la funcion y sus parametros son estos

Code: Select all  Expand view

DLOpen( 1 , cIp , cPass , nil , nil , CallBackFunction() )
 


Donde las variables cIp y cPass son tipo char

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

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Fri Sep 07, 2018 8:26 am

Que valor está devolviendo DLOpen() ?

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby ARC » Fri Sep 07, 2018 8:55 am

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 view


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
ARC
 
Posts: 18
Joined: Fri Nov 10, 2017 1:19 pm

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Fri Sep 07, 2018 9:21 am

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: WRAPPER - TAPI - DEVLINK

Postby Antonio Linares » Fri Sep 07, 2018 9:24 am

Comenta la llamada a MessageBox():

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

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 35 guests