[pyar] Biometrica para Python con ctypes

Luis A. Garcia lagsistemas en gmail.com
Mie Nov 17 11:53:34 ART 2010


Hola Lista:
Esta pregunta es la continuación de un requerimiento anterior  (el de abajo) 
que hice a la lista, por  razones de tiempo tuve que abandonar el proyecto 
momentáneamente, pero ahora lo he retomado, y aprovecho la oportunidad para 
agradecer a todos especialmente a Alejandro Santos que se tomo mucho de su 
tiempo para explicarme su experiencia, con SWIG,

El tema ahora es que hace un tiempo hice un  curso con  Mariano Reinghart y 
me comento que existía CTYPES, y la verdad me pareció espectacular levanto 
las librerías dinámicas en forma muy sencilla.

Ahora bien y perdón por la extensa lata paso a explicar mi problema a ver si 
me pueden ayudar...

me esta dando este error
  a=libLector.bAPI4_GetImage(Byte,timeout,iResolution,piWidth,piHeight)
      WindowsError: exception: access violation writing 0x00011000

EL codigo es este:

libLector = ctypes.CDLL ("C:\Tecnobrain\Python\dev\Biometrica\SDK\Dynamic 
Link Library\PTSDK4_WISCMOS2_PTFV.dll", ctypes.RTLD_GLOBAL)
Byte = 370 * 180 * ctypes.sizeof(ctypes.c_byte)
timeout = 5000
iResolution = 370*180
piWidth = 370
piHeight = 180
a=libLector.bAPI4_GetImage(Byte,timeout,iResolution,piWidth,piHeight)
(aqui hago un foco en un textCtrl de wxpython (la verdad no estoy seguro si 
esto esta bien)

y la documentacion de la función
5.6 Get Fingerprint Image
Synopsis : bAPI4_GetImage (BYTE *picture, int timeout, int iResolution,int 
*piWidth, int *piHeight)
Description : Call the bAPI4_GetImage to get the gray fingerprint image with 
quality check.
Parameter :
picture Pointer to an image buffer
timeout Timeout period for getting image (millisecond)
iResolution Image resolution (Default: SENSOR_RESOLUTION)
piWidth Returned image width
piHeight Returned image height

Return Value :
FALSE (0) Get gray image NG.
TRUE (1) Get gray image OK.

Muchas gracias espero que me puedan ayudar
Saludos
Luis




>>
>> Despues de ver un poco las dos opciones voy a intentar hacerlo con SWIG,
>> ya lo instale y empece a probar con un ejemplo simple en c, como estoy
>> trabajando en Windows uso SWIGWIN, todo bien hasta logre generar el
>> (ejemplo_wrap.c), mi problema empieza cuando tengo que conectarlo con
>> Python, perdonen mi ignorancia, (como dice Borges) pero se que esto hay
>> que compilarlo para que pueda generar los (.pyd,dll) y demas que pueda
>> importar desde python este modulo en C , alguien sabe como hacerlo,
>> nunca he compilado un programa en C, todo lo que encontrado googleando
>> es para Linux y Unix.
>>
>
> Hace rato que no hago nada de eso y no tengo un win con un compilador a
> mano, ultimamente ando con Linux. Espero poder guiarte, la idea es mas o
> menos así:
>
> 1. Necesitás un compilador de C. Supongo que Dev-C++ deberia alcanzar,
> sino tenés Microsoft Visual C++ Express Edition, que es gratuito, pero
> mucho más pesado de instalar y hacer andar.
>
> 2. Una vez que tengas el compilador y el IDE necesitás crear un nuevo
> proyecto. Tiene que ser del tipo: "Dynamic DLL" o similar, depende del
> compilador e IDE se hace de diferente forma. Capaz tengas que elegir la
> que dice "Threaded", no me acuerdo como es eso.
>
> 3. En tu nuevo proyecto agregás todos los ".c" que el SWIG genere.
>
> 4. En las propiedades del proyecto tenes que configurar:
>
> a) En la parte de compilacion las rutas de headers de Python y SWIG:
>
>   C:\Python26\include
>
> No se cuales son los include que el SWIG necesita.
>
> b) En la parte de linker tenes que agregar las rutas de las dependencias
> de linkeo, esto esta en:
>
>   C:\Python26\libs
>
> c) En la parte de librerias tenes que agregar la libreria de Python:
>
>   C:\Python26\libs\libpython26.a
>
> 5. Le das compilar y cruzás los dedos :P
>
> 6. A la DLL compilada le cambias el nombre a:
>
>   _tumodulo.pyd
>
> Copiás ese archivo .pyd a tu proyecto, junto con el archivo
> "tumodulo.py" que te genere SWIG. Luego abris un interprete de prueba y
> haces:
>
>   import tumodulo
>
> La mano viene por ese lado, aunque capaz me faltó algún paso.
>
> -- 
> Alejandro Santos
> http://www.alejandrosantos.com.ar
 


__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5626 (20101117) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com






More information about the pyar mailing list