Archivo de la etiqueta: api

Programar la cámara IP Zaapa CIPRW (ZA-CIPRW) en .NET

Uno de los problemas que veo con la cámara IP Zaapa que me compré es que sólo se puede manejar desde un navegador Internet Explorer, y la verdad es que eso le quita mucho potencial a una cámara tan completa y barata como esta. Por eso me he puesto manos a la obra para desengranar un poco el funcionamiento y poder crear una aplicación de escritorio para poder manejarla.

Todo el trabajo de investigación ha estado centrado en ver cómo funciona el código fuente javascript de la página web que ofrece la cámara zaapa, ya que buscando por internet no he encontrado nada sobre cómo manejarla.

Lo primero que nos encontramos es que instancia un objeto llamado DVM_IPCam2.ocx. Buscando por internet he encontrado muy poca información sobre ese fichero en cuestión y mucho menos de la API OLE que encierra.

Por suerte el Visual Studio .NET puede incorporar ocx y ver de una tacada todos los métodos, propiedades y eventos que maneja el control ocx. Para ello dentro del Cuadro de herramientas, se pulsa con el botón derecho en Componentes y se selecciona Elegir Elementos… Después se pulsa sobre la pestaña Componentes COM y se selecciona DVM_IPCam2 Control.

dvmipcam2

Si no existiese es que no está registrado en Windows. Entonces habría que descargar el ocx desde la dirección http://<ip de la camara>/codebase/DVM_IPCam2.ocx, guardarlo en c:\windows\system32 y desde una consola de ms-dos ejecutar regsvr32 c:\windows\system32\DVM_IPCam2.ocx y después volver a repetir el proceso de Visual Studio.

Con esto ya tendremos el componente ocx para insertarlo en el formulario. Ahora para acceder a la cámara hay que seguir los siguientes pasos:

  • Conectar con la cámara usando el método MonitorConnect, pasándole como parámetros la dirección host o ip de la cámara, el puerto por el que escucha (normalmente el 80), el usuario y la contraseña.
  • Capturar el evento OnMonitorConnectResult y si la conexión ha sido satisfactoria pasar al siguiente punto
  • Empezar a recibir las imágenes dentro del control ocx usando el método PlayVideo.
  • Esperar a recibir las imágenes con el evento OnPlayVideoResult.
  • Hacer el resto de operaciones: mover la cámara con el método DecoderControl, hacer fotografías con el método Photo2, grabar un video con el método StartRecord2, reiniciar la cámara con el método RebootCamera, etc.
  • Cuando se termine de trabajar con la cámara llamar a los métodos StopVideo, StopRecord y MonitorDisconnect.

He desarrollado una pequeña aplicación que muestra estos conceptos. No hace comprobaciones de errores para simplificar el código:

aplicacioncamara

Podeis descargar el código fuente en c# y un ejecutable desde aquí.

El siguiente paso sería tratar de hacer que funcionase el firefox para windows y en un futuro conocer el protocolo para manejarlo desde linux, desde un iphone o desde cualquier otro entorno.

Google Open Pizza Night II (impresiones)

Bueno, pues una vez concluido el evento ya puedo escribir sobre el, aunque lo haré resumido y con fotos y videos.

En general ha sido un evento interesante, divertido y hasta en mi caso productivo.

Se ha realizado en lo que sería el comedor de la sede de google en españa, sita en la planta 26 del edificio torre picaso:

cimgp0507.jpg

Las vistas son impresionantes:

cimgp0506.jpg

Y aunque he llegado media hora tarde, en realidad estaban empezando con una charla sobre programación de la API de youtube.

La charla ha sido amena, y mucho más distendida que en el Google developer day, donde en las ponencias había mucha más gente y muchos nos perdíamos sobre lo que había que hacer. Aquí nos lo han explicado paso por paso y si nos perdiamos venía gente de google a ayudarnos.

Como había tanta gente (seríamos unos 50 + o -), al final me tuve que sentar en los sillones-puf que tenían por ahí, y aunque cómodos, para levantarse o bien cogías carrerilla con los michelines o bien te apollabas en el suelo, por supuesto dejando el portatil donde buenamente pudieses.La red wifi no andaba muy fina, y eso me recordaba a los problemas que tuvieron también por el mismo tema en el Google developer day. Aún así pudimos seguir las explicaciones para probar las APIs.

Luego vino el descanso, y tomamos la ansiada pizza que daba nombre al evento, acompañada de unas cervercitas, refrescos, golosinas, etc:

cimgp0505.jpg

Pizza, cerveza y código:

cimgp0509.jpg

Las golosinas. Google es una de las pocas empresas que ofrece todo gratis a sus empleados:

cimgp0508.jpg

Charlar, picar código, navegar por internet… en el descanso cualquier cosa era factible:

Luego comenzaron los proyectos individuales que habían creado algunos asistentes usando en parte las apis de google maps y youtube, entre otras. La verdad es que alguno era muy interesante y muchos ya estaban funcionando. Tenían 10 minutos de exposición y otros 3 de preguntas cada uno.Luego hubo reparto de premios, en el cual yo gané una power ball debido a que había hecho un ejercicio que nos habían propuesto: Mostrar subtitulos o mensajes en base al tiempo de reproducción de un video usando la api de youtube. En mi caso, algo cutre, pero funcional 🙂

La verdad es que Google es diferente y se nota en estos aspectos. No es que Google esté de moda y por eso nos guste a la mayoría, es que Google nos ofrece servicios que todos podemos usar y realmente se interesa de que podamos sacarlos provecho y lleguen a todo el mundo (ya sea a programadores para implementar sus aplicaciones o al público en general que las maneja).

Esperemos que sigan en esa línea y pronto tengamos otro evento.