FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour WRAPPER - TAPI - DEVLINK
Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
WRAPPER - TAPI - DEVLINK
Posted: Tue Sep 04, 2018 09: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 (fw): Select all Collapse
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

https://ibb.co/nzg4ue
" alt="" loading="lazy">

https://ibb.co/dQew7z
" alt="" loading="lazy">

La documentacion completa esta en esta URL
https://downloads.avaya.com/elmodocs2/i ... dlopen.htm
" rel="noopener">
https://downloads.avaya.com/elmodocs2/i ... dlopen.htm
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Tue Sep 04, 2018 09: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 (fw): Select all Collapse
// 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
Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Wed Sep 05, 2018 08:22 AM

Genial!

Much铆simas gracias.

Vamos a realizar las acciones que comentas y vemos.

Un saludo

Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 07:06 AM
Buenos d铆as Antonio

Hemos tenido que dejar as铆 las llamadas a las funciones

Code (fw): Select all Collapse
#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.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 07:32 AM

As铆 no es correcto.

Daba alg煤n warning o error al compilar mi c贸digo ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 07: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 (fw): Select all Collapse
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.
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Thu Sep 06, 2018 08:42 AM
A帽ade esta l铆nea y vuelve a intentarlo:

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

Antonio Linares
www.fivetechsoft.com
Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: 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 (fw): Select all Collapse
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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: 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
Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 06:10 AM
Buenos dias!

Code (fw): Select all Collapse
MsgInfo( CALLBACKFUNCTION() ) -> Devuelve el siguiente valor 4200408


La llamada a la funcion y sus parametros son estos

Code (fw): Select all Collapse
DLOpen( 1 , cIp , cPass , nil , nil , CallBackFunction() )


Donde las variables cIp y cPass son tipo char

Un saludo
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 08:26 AM

Que valor est谩 devolviendo DLOpen() ?

MsgInfo( DLOpen( ... ) )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 18
Joined: Fri Nov 10, 2017 01:19 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 08: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 (fw): Select all Collapse
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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 09:21 AM

Comprueba si se genera un archivo *.log

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: WRAPPER - TAPI - DEVLINK
Posted: Fri Sep 07, 2018 09: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