Pasemos a describir el estado actual del componente de telemetría. Este componente está subdividido en varias secciones, una de ellas es la representación gráfica de medidas de distancia tomadas, otra sección es la representación numérica de las distancias, en otra tenemos un control de grabación de datos, y en otra tenemos un reproductor de vídeos.

La aplicación está realizada en Java usando para la interfaz gráfica (en adelante GUI) la librería SWING. Tengo que señalar que la realización de GUIs en Java es tediosa y no es para nada una tarea trivial, ya que he programado toda la GUI a código al haber pocos frameworks para swing que permitan arrastrar y soltar componentes como en el IDE Visual Studio.
Es cierto que en versiones anteriores de Eclipse existía un plugin llamado Visual Editor, pero que actualmente ha quedado desafasado y no es compatible con las versiones actuales de Eclipse, pero para evitar más problemas de compatibilidades de otro tipo por utilizar una versión antigua, prefiero utilizar una versión reciente de Eclipse, en este caso la Helios.
Por fortuna, después de mucho investigar por internet (y después de haber escrito gran parte de la GUI directamente en código), leí en esta web http://netbeanside61.blogspot.com/2008/04/eclipse-project-using-gui-designed-from.html que el IDE NetBeans trae incorporado un framework de edición de GUIs, que se puede emplear combinadamente con Eclipse desde una opción que tiene de "importar proyecto de Eclipse". Una vez importado, se pueden crear las GUIs y después únicamente hay que refrescar los fuentes del proyecto en Eclipse para tener accesibles las GUIs creadas en el otro entorno.

La cantidad de tiempo que me ha consumido y sigue consumiendo el diseño y refinamiento de la GUI está siendo elevado, pero es satisfactorio ver que con un poco de esfuerzo se puede conseguir una GUI aceptable.
Para conseguir representar las medidas en la zona de telemetría, he empleado la API Java2D, que permite dibujar distintos tipos de figuras geométricas, tales como líneas, arcos, circunferencias, círculos rellenos y óvalos con propiedades configurables. Entrando un poco más a nivel de implementación, señalo que he usado coordenadas polares, que se adaptaban muy bien a este caso, ya que tenía que dibujar rectas que partían desde el centro de una circunferencia y se alargaban proporcionalmente a la medida del sensor que representaba cada una , siendo el máximo de distancia el equivalente a que la recta toque el arco de la circunferencia. Como hay 19 sensores de distancia , he tenido que dividir los 180º de la semicircunferencia superior en 19 partes.
El cambio de coordenadas cartesianas a polares es el siguiente:
x=r*cos(alpha)
y=r*sen(alpha)
Continuaré explicando el resto de secciones de la interfaz en siguientes entradas.
No hay comentarios:
Publicar un comentario