LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Conectando con una camara canon powershot g9

Buen dia aqui les traigo un problema generado por la necesidad de conectar este modelo de camara Canon Powershot G9 mediante labview, estoy usando el Canon Software Development Kit, y tengo que llamar las funciones mediante Call Function Library Node, al momento de llamar una de las funciones para enumerar el dispositivo USB encuentro un problema en la funcion que es de tipo: int32 getdevicelist(int32 *pbuffersize prdevicelist *pdevicelist) para crear el typedef prdevicelist hice como lo comentan en uno de los foros, un cluster ordenando cada uno de los items que lleva la estructura, despues puse en el nodo adapt to type, en ambos casos el data format lo puse en pointers to handles, el problema es que siempre me marca que el buffer no es suficiente, cuando pongo un  buffer superior que el default que como default me arroja 1110 el labview se cierra por completo, la ultima vez que lo intente lo hice con un while loop para que la memoria fuese de 2 en 2 hasta llegar a los 1110 cuando llego, inmediatamente me mando memory error.

 

anexamente a este problema me encuentro con la desafortunada tarea de leer archivos tipo RAW ( CR2) de esta camara obviamente, este archivo es mas o menos del tipo TIFF pero la verdad estoy bastante atorado con la combinacion de colores y todo eso, si solicitan puedo enviar cualquier tipo de documento que me pidan y de antemano agradezco mucho su ayuda, este proyecto tiene que estar terminado en 1 mes y es una Tesis profesional.

0 Kudos
Message 1 of 4
(3,034 Views)

Hola Morfeow

 

El problema se encuentra en el llamado a la libreria, o en la librería misma, puede ser que no esté funcionando como debería; en el sitio de Canon, encontré el manual de las mismas (cuya liga está abajo) y noté que no incluyen el header entonces no se puede hacer un debug correctamente. 

 

Foro de cómo usar LabVIEW con una cámara Cannon

 

Lo que se podria hacer seria crear un cluster que contenga los tipos de datos y guardarlos como type def.
How to create a type def?

En el manual dice que  prDeviceList consiste de un un arreglo definido por tipo y la definicion del &BufferSize es un "unsigned integer de 32". He tratado de tener acceso a la libreria pero debido a que no encuentro el encabezado (header .h) no he podido examinarla. Una vez que se definan los datos correctamente, si la libreria no tiene errores, entonces no deberia de haber problema alguno al llamarla.

Captura1.PNG

 

Captura2.PNG

Tambien acerca de la conversion del tipo de archivo que entrega la camara (raw). Si la camara entrega unicamente un arreglo de 8 bits por pixel y deseas incrementar el numero de bits a 10,12, 14 o 16. La solucion a este problema seria la de reordenar datos usando la funcion Join Numbers, tal y como se muestra en la figura incluida.

Para convertirla a RGB hay que usar IMAQColorValueToInteger.vi para recuperar la imagen siguiendo este algoritmo:

R=Y + 1.4022 ^ (V - 128)
G=Y - 0.3457 ^ (U - 128) - 0.7144 ^(V-128)
B=Y + 1.7710 ^ (U - 128)
A=0

Estos valores pueden ser usados en conjunto con IMAQColorValueToInteger.vi para formar un U32

Esta informacion se encuentra en el manual de NI VISION


Espero esta informacion te sea de utilidad

0 Kudos
Message 2 of 4
(2,952 Views)

muchisimas gracias por tu respuesta, no habia notado que habias contestado, te agradesco tengo conmigo el SDK de cannon ahi vienen todos los archivos .h y las dos librerias para hacer todo, pero la verdad no encuentro como hacer un debug, no tengo tan alto el conocimiento en programacion nativa, me gustaria saber si te los puedo hacer llegar de alguna manera.

 

atentamente Daniel Hernandez Arriaga

 

pd. solo dime que archivo necesitas tengo los siguientes:

 

CARPETA LLAMADA inc:

 

prAPI.h

prError.h

prFuncType.h

prType.h

 

CARPETA LLAMADA lib:

 

prSDK.lib

 

 

CARPETA LLAMADA redist:

 

PRLIB.dll

PRSDK.dll

0 Kudos
Message 3 of 4
(2,808 Views)

Hola Daniel;

 

Puedes intentar reordenar el cluster, das click derecho en la estructura del cluster y reordenas los elementos para que esten en el mismo órden que en la definición del tipo. Esto puede ayudar.

Si necesitas ayuda directamente con la librería de Canon te recomendaríua contactaras a alguien de su equipo pues desconosco sus códigos de bajo nivel 😄

De cualquier forma espero poder ayudarte con alguna otra pregunta

 

Saludos

0 Kudos
Message 4 of 4
(2,793 Views)