Tag Archive: COM


Siempre había tenido curiosidad por la programación gráfica en las tres dimensiones, pero los comentarios de la gente que me hablaba de ello hacían que decidiera aplazar mi inmersión en el tema e incluso olvidarme de ello. Curiosamente todos esos comentarios coincidían en que tanto OpenGL como DirectX eran APIs difíciles de aprender y para las que había que tener un conocimiento muy fuerte de las matemáticas.

Pues bien, os diré que todo depende de lo que quieras hacer. Mostrar una simple figura geométrica y rotarla es muy sencillo. Pero si ya quieres desplegar mallas más complejas, con texturas, mapas de normales y especulares, iluminación y cámara, el asunto se torna un poco más complicado y laborioso. Pero si bien es cierto que tanto OpenGL como DirectX pueden asustar con sólo echar un pequeño vistazo a la documentación o a algún ejemplo de cierto calado, realmente, para hacer cosas básicas (y no tan básicas) lo más importante no es conocer dichas APIs, sino los conceptos, su funcionamiento interno, y tener una pequeña base de álgebra lineal y física. Después, el aprender una u otra biblioteca a un nivel que te permita hacer algo curioso se hace inmensamente más llevadero.

Comencé a estudiar OpenGL, ya que Android e iOS lo utilizan, y, ya que me ponía a aprender algo, debía valorar qué usos y aplicaciones prácticas poder darle de cara a un posible futuro profesional (el desarrollo para dispositivos móviles lleva tiempo en pleno boom). Pero una oferta de trabajo interesante como programador de videojuegos para Windows me hizo interrumpir mis avances con OpenGL y pasarme a DirectX con la finalidad de crear una aplicación 3D que me sirviera de muestra, tal y como pedían en la oferta. Así pues en más o menos un mes conseguí hacer esto:

La aplicación hace uso de la biblioteca libre Assimp para la carga de los modelos y escenarios, de DirectX 9.0c para el trabajo sucio y de los shaders para el renderizado final, concepto que también se me tornaba oscuro hasta hace poco (¡lo importante que es hacerse con un buen libro!).

Aún me queda mucho por aprender; La programación gráfica es un océano de técnicas, conceptos y conocimientos multidisciplinares. Pero la parte más complicada, que es empezar y asentar los conocimientos fundamentales y más comunes, ya está conseguida.

Anuncios

INTRODUCCIÓN

Proyecto ambicioso encargado para el laboratorio de calibración eléctrica de Castilla y León (LACECAL) que se llevó a cabo con éxito y actualmente se encuentra integrado e implantado en la empresa. Para su realización se hizo necesario un equipo multidisciplinar formado por tres alumnos de la Universidad de Valladolid: un estudiante de Ing. Téc. Industrial en mecánica y dos estudiantes de Ing. Téc. Industrial en Electrónica, uno de los cuales fui yo. En principio se buscaba un estudiante de Ing. Informática pero mis conocimientos y experiencia informática desarrollando software, unido a la titulación que cursaba en aquel momento, me hacía el mejor candidato de cara a comprender todo el proyecto y comunicarme más fluidamente con mis compañeros. De hecho más tarde estudiaría y obtendría la titulación de Ing. Téc. en Informática de Sistemas.

ANTECEDENTES

En LACECAL se llevan a cabo, entre otras, tareas de ensayo, calibración y certificación ENAC de equipos eléctricos y electrónicos. En la sección de metrología concretamente se realizan con mucha frecuencia ensayos de transformadores de medida, la gran mayoría de los cuales son de reducido tamaño pero numerosos. Hasta la realización del proyecto, estos ensayos los realizaba un operario, uno a uno, controlando el equipo de medida de forma totalmente manual y tomando los datos visualmente. Es evidente que esta forma de proceder no resultaba productiva, más aún cuando era raro el día que no hubiera que ensayar al menos 50 de estos pequeños transformadores. Así surgió la idea por parte del encargado de supervisión, quien, siendo a su vez profesor de la Universidad, preparó una beca para un proyecto que permitiera realizar los ensayos de forma mucho más rápida, fácil y con menor posibilidad de error.

DESCRIPCIÓN

La idea general de qué hacer y cómo hacerlo estaba clara. Tras mucho análisis, diseño y meses de trabajo para su desarrollo y prueba, el proyecto tomó su forma final, se concluyó y quedó integrado de forma satisfactoria.

De forma resumida, el equipo resultante consiste en una mesa con capacidad flexible de hasta 12 transformadores cuyos primarios quedan conectados en serie y cuyas tomas secundarias conectan con un equipo electrónico que conmuta secuencialmente entre los transformadores para cada prueba del ensayo. Este equipo conmutador a su vez va conectado a la entrada del equipo de medición y a uno de los dos puertos serie (RS232) de un PC que controla la conmutación. A través del otro puerto serie se conecta el PC con el equipo de medición para obtener los valores de las medidas de forma automática.

MI APORTACIÓN AL PROYECTO

Mi misión concreta fue la de diseñar y desarrollar la aplicación informática para el PC, trabajando de forma estrecha con el alumno de Ing. Electrónica encargado del realizar el conmutador para llevar a buen puerto las comunicaciones y funcionamiento del automatismo. El PC trabajaba con Windows y, dado que no era estrictamente necesaria una aplicación en tiempo real, opté por utilizar Visual Basic .NET para su realización, pues ya entonces era un lenguaje muy evolucionado que ofrecía sencillez a la vez que funcionalidad suficiente para el objetivo perseguido, y además había realizado recientemente un curso del plan FIP de 200 horas centrado en VB .NET.

Una de las características de seguridad de Windows XP, y más aún bajo código administrado VB .NET, es que no permite el acceso directo al hardware del PC. Por ello me hice con un control OCX (mscomm32.ocx) a modo de interfaz que permitiera la comunicación directa con los puertos RS232.

Por otro lado, se pretendía usar el mismo PC para el registro de los ensayos y la generación de informes y facturas. Además se necesitaba también un modo sencillo de consultar y modificar los datos registrados en la base de datos Access que se venía usando al efecto. Por ello otra decisión fue la de crear un módulo integrado gestor de BBDD (OLEDB y ADO .NET) y generador de documentos (Crystal Reports).

Como aporte personal mio, pensando siempre en facilitar al máximo el trabajo de los operarios y crear una aplicación completa y de calidad, me hice con un libro de programación avanzada en VB .NET para conocer todos los recursos que ofrecía este lenguaje. Así pues diseñé e implementé mis propios eventos, accedí a funciones de la API Win32 desde el código administrado, e incluso amplié mediante herencia las características de algunos controles y componentes que la aplicación usaba. A modo de ejemplo, mejoré el ComboBox de modo que, aplicándolo a búsquedas, hiciera consultas en la base de datos, mostrando y actualizando a la vez en un ListBox desplegable dinámico los resultados que contuvieran la cadena escrita a cada pulsación de tecla, permitiendo así agilidad a la hora de acceder a la información. Si, como lo que hace Google hoy día cuando tecleamos para buscar algo.

Una vez terminada, la aplicación permite controlar todo el proceso de ensayos, marcando los pasos a seguir al operario en cada momento, controlando de forma sincronizada la conmutación de los transformadores en la mesa, leyendo y mostrando en pantalla en el momento preciso los datos del ensayo desde el equipo de medición y registrándolos finalmente en la base de datos. También, por otro lado y siempre mediante completos formularios, permite consultar y modificar la base de datos, y generar e imprimir informes de ensayo, albaranes y facturas.