Buenas tardes para todos,
En este momento me surge la necesidad de integrar a nuestra aplicación un SDK (Camaras Lectura Placas), con le fin de automatizar algunos procesos.
El proveedor de las cámaras HIKVISION, me hace entrega de archivos .dll y archivos .lib, alguien sabe por donde puedo arrancar? Como se debe iniciar un proyecto de estos? si tengo xharbour 32 bits el SDK también debe ser 32 bits?
De antemano gracias
Uno de los SDK se puede descargar en el siguiente link:
https://www.hikvision.com/es-la/Support ... rettyPhoto
LEANDRO AREVALO
Integrar SDK
Integrar SDK
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Re: Integrar SDK
Hola Leandro.
- Además de los archivos .dll y archivos .lib, tienes que tener un manual de todas las funciones que se incluyen en esa DLL donde se describa cada uno de los parámetros que recibe y lo que devuelven. Además se necesita el fichero .h donde se define el prototipo.
- Una vez tengas eso deberías de hacer wrappers de las funciones que vas a usar en tus programas.
- si tienes xharbour 32 bits el SDK también debe ser 32 bits.
Espero haberte ayudado.
- Además de los archivos .dll y archivos .lib, tienes que tener un manual de todas las funciones que se incluyen en esa DLL donde se describa cada uno de los parámetros que recibe y lo que devuelven. Además se necesita el fichero .h donde se define el prototipo.
- Una vez tengas eso deberías de hacer wrappers de las funciones que vas a usar en tus programas.
- si tienes xharbour 32 bits el SDK también debe ser 32 bits.
Espero haberte ayudado.
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Integrar SDK
Manuel, gracias por responder:
Me ayudaste bastante, pero me gustaría molestarte y saber si puedes publicar algo de código, ya que no se como se deben integrar los archivos dll, ni tampoco como manipularlos, se deben manejar como objetos?, como hago que funcionen desde nuestra aplicación?
De antemano gracias,
Me ayudaste bastante, pero me gustaría molestarte y saber si puedes publicar algo de código, ya que no se como se deben integrar los archivos dll, ni tampoco como manipularlos, se deben manejar como objetos?, como hago que funcionen desde nuestra aplicación?
De antemano gracias,
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Re: Integrar SDK
Hola Leandro:
Tal cual te comenta Manuel, lo mas importante es tener que funciones tiene la dll y que parametros hay que pasarle a dichas funciones..
Para que tengas una idea te tiro un poco de codigo que uso con una dll.
Espero te sirva.
Tal cual te comenta Manuel, lo mas importante es tener que funciones tiene la dll y que parametros hay que pasarle a dichas funciones..
Para que tengas una idea te tiro un poco de codigo que uso con una dll.
Code: Select all
METHOD New( nPort) CLASS TFiscal
LOCAL s := FI_VACIO
DEFAULT nPort := 1
::nHandler := CallDll32( "OpenComFiscal" , "WINFIS32.DLL" , nPort , 1 )
// Como ves aca, llamo a la funcion OpenComFiscal de la dll WINFIS32.DLL y le paso dos parametros, y el resultado de la funcion lo guardo en ::nHandler
::lStatusFiscal := .f.
::lStatusPrinter := .f.
::lStatusLogico := .f.
::aUltimaRta := {}
::nPort := nPort
::lClienteCargado := .f.
::cDescriptionError := ""
IF ::nHandler >= 0
CallDll32( "InitFiscal" , "WINFIS32.DLL" , ::nHandler )
CallDll32 ( "UltimaRespuesta" , "WINFIS32.DLL" , ::nHandler, @s )
// En este caso le paso un valor por referencia
::aUltimaRta := Fi_ConvertRta(s)
ELSE
::lStatusLogico := .t.
::cDescriptionError := "El impresor fiscal no esta conectado al puerto " + STR(nPort)
RETURN nil
ENDIF
RETURN Self
METHOD End() CLASS TFiscal
CallDll32( "CloseComFiscal" , "WINFIS32.DLL" , ::nHandler )
RETURN .t.
METHOD ErrorStatus() CLASS TFiscal
LOCAL s := FI_CONSULTAR_ESTADO
CallDll32 ( "MandaPaqueteFiscal" , "WINFIS32.DLL" , ::nHandler , s )
s := FI_VACIO
CallDll32 ( "UltimaRespuesta" , "WINFIS32.DLL" , ::nHandler, @s )
IF !empty(::aUltimaRta) .AND. LEN(::aUltimaRta) > 2
::GetErrors(::aUltimaRta[1],::aUltimaRta[2])
ELSE
::lStatusFiscal := .f.
::lStatusPrinter := .f.
ENDIF
RETURN ::lStatusFiscal .or. ::lStatusPrinter
- albeiroval
- Posts: 323
- Joined: Tue Oct 16, 2007 5:51 pm
- Location: Barquisimeto - Venezuela
Re: Integrar SDK
hola leandro.
Para este caso como lo comentan los otros colegas debes tener un manual descriptivo de las funciones,
y adicional a eso debes tener conocimiento de como hacer el wrapper de la libreria en C para que lo puedas usar
con harbour y fivewin.
Si necesitas mas informacion me puedes escribir a mi correo, albeiroval arroba gmail punto com
Para este caso como lo comentan los otros colegas debes tener un manual descriptivo de las funciones,
y adicional a eso debes tener conocimiento de como hacer el wrapper de la libreria en C para que lo puedas usar
con harbour y fivewin.
Si necesitas mas informacion me puedes escribir a mi correo, albeiroval arroba gmail punto com
Re: Integrar SDK
Cesar, Albeiro, gracias por responder.
Albeiro, me puedes explicar un poco mas sobre el tema de hacer el wrapper? se debe compilar?
De antemano gracias
Albeiro, me puedes explicar un poco mas sobre el tema de hacer el wrapper? se debe compilar?
De antemano gracias
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
- albeiroval
- Posts: 323
- Joined: Tue Oct 16, 2007 5:51 pm
- Location: Barquisimeto - Venezuela
Re: Integrar SDK
leandro.
El wrapper es envolver unas funciones echas en "C" o "C++" para que puedan ser compilados por Borland C (que es lo que uso en mi caso BCC) o Microsoft Visual C, ellos generan un archivo ".obj" el cual agregas tu proyecto.
Aqui un ejemplo :
El wrapper es envolver unas funciones echas en "C" o "C++" para que puedan ser compilados por Borland C (que es lo que uso en mi caso BCC) o Microsoft Visual C, ellos generan un archivo ".obj" el cual agregas tu proyecto.
Aqui un ejemplo :
Code: Select all
extern HINSTANCE hadleDll;
/*-------------------------------------
Variable para Controlar la Salida
del Magnetic Read
---------------------------------------*/
BOOL bExitReadMag;
//-------------------------------------//
HB_FUNC( MAG_OPEN )
{
if ( hadleDll != 0 )
{
MAGOPEN pFunc = (MAGOPEN) GetProcAddress( hadleDll, "MagOpen" );
if ( pFunc )
pFunc();
else
Msg( "Error Funcion Dll MagOpen" );
}
else
Msg( "No Encontro Archivo Dll" );
hb_ret();
}
//-------------------------------------//
HB_FUNC( MAG_CLOSE )
{
if ( hadleDll != 0 )
{
MAGCLOSE pFunc = (MAGCLOSE) GetProcAddress( hadleDll, "MagClose" );
if ( pFunc )
pFunc();
else
Msg( "Error Funcion Dll MagClose" );
}
else
Msg( "No Encontro Archivo Dll" );
hb_ret();
}
//-------------------------------------//
HB_FUNC( MAG_RESET )
{
if ( hadleDll != 0 )
{
MAGRESET pFunc = (MAGRESET) GetProcAddress( hadleDll, "MagReset" );
if ( pFunc )
pFunc();
else
Msg( "Error Funcion Dll MagClose" );
}
else
Msg( "No Encontro Archivo Dll" );
hb_ret();
}
//-------------------------------------//
HB_FUNC( MAG_SWIPED )
{
hb_retl( MagSwiped() );
}