Hola amigos, realmente creo que vale contar el estado actual! En general en mi proyecto de la construcción del modelo navegable de un velero siempre vuelve a confirmarse que un tema abre las puertas para ramificaciones!
En este caso finalmente mi entorno del taller y del laboratorio electrónico llego a un punto, lejos de haberlo completado, que puedo iniciar trabajos concretos. Así mis actividades en torno del uso de la placa Raspi, resultando que este entorno es apoyado por las herramientas de Wolfram Software que uso, ha vuelto a abrir un ramo de campos que tengo que investigar.
Como aficionado a la electrónica hacer parpadear un LED puro visto desde el aspecto de conectar a uno de los pines la LED y la resistencia es elemental. Gracias a las librerías disponibles para usar los pines del conector GPIO, que mi foco está en hacer ese ejercicio necesario para confirmar una base que funciona, combinándolo con el inicio de las actividades en torno al implementar un GUI!
También aquí vale mencionar que los materiales de información de como usar el "binding" llamado "tkinter", creo que la traducción apropiada del término inglés sería "conectar" objetos del GUI, llamados "widgets", como son Botones y elementos similares que en conjunto implementan el GUI, con las funciones o instancias de "objetos" del código escrito por ejemplo en el lenguaje "Python"!
Para aquellos de Ustedes no tan familiarizados con lo que son "widgets" y con la lengua de programación "Python, aquí una breve presentación:
"Widgets" son objetos como los "botones" que todos conocemos de las GUIs de Windows o Mac por ejemplo. Si con el ratón pinchamos uno de esos botones entonces el programa al que corresponden ejecuta una acción. Herramientas como "Tk", el cual está disponible en el entorno de desarrollo de Python, usa un programa que hace accesible la herramienta "Tk" al lenguaje de Python por medio de las funcionalidades de "Tkinter". Lo que se puede apreciar muy pronto, observando tutoriales en video disponibles en Youtube, Tkinter en combinación con "Tk" y Python conecta un elemento gráfico llamado widgets, aquí como ejemplo un "botón", con un módulo del programa escrito en Python. Así existen por ejemplo 3 parámetros que se pueden asociar a ese widget, "Button-1" = botón izquierdo del ratón, "Button-2" el botón céntrico del ratón y "Button-3", el botón derecho del ratón! Si ejecuto el botón izquierdo del ratón estando el cursor por encima de ese botón, entonces es ejecutado la función conectada a ese parámetro, "Botton-1".
Todo lo que normalmente exige una cantidad considerable de código como por ejemplo:
1.: Monitorear la posición del cursor en la pantalla y detectar que este se encuentra por encima del botón.
2.: Posicionar el botón en la pantalla aún si cambio las dimensiones físicas de la ventana.
3.: Detectar cuál botón del ratón se pincho, eso se denomina "evento".
4.: Habiendo detectado la acción del usuario de haber pinchado un cierto "widget" y por lo tanto haber sido confrontado con ese evento de haber pinchado uno de sus 3 botones el conectar este evento con cierta función de mi programa escrito en Python.
Todo esto ocurre de forma invisible para el programador con solo conector una función al evento correspondiente del "widget" que el usuario pincho!
Esto hace muy sencillo el sumar al código que usualmente hacemos como primer ejercicio, el parpadear de un LED un GUI!
Los problemas para mi en mi proyecto empiezan cuando pienso y considero la implementación de un GUI apropiado para los experimentos que tengo planeados! Yo quiero crear un GUI como los que conocemos de otras herramientas de software, donde es fácil usar y crear un panel instrumental. No mas hay que ver las funcionalidades en esto ofrecido por ejemplo de las herramientas de NI, "National Instruments"!
Lo primero que hice fue investigar las funcionalidades ofrecidas por Tk a través de Tkinter. Aquí existen 3 formas diferentes de implementar el diseño de un GUI. Pero realmente fuera de ofrecer métodos sencillos para definir la GUI se pueden usar los widgets posicionándolos usando un "grid". Grid es una estructura de tabla como lo conocemos por ejemplo de Excel. Los widgets disponibles de forma incluidas en tkinter según lo que mis investigaciones han dado al momento no incluyen un "instrumento" análogo a aquellos que se usan para indicar tensiones de forma análoga en un panel instrumental! Por otro lado widgets adicionales existen, pero identificar un paquete que incluya tales widgets no he sido capaz de encontrar. Adicionalmente se dificulta el asunto de una cantidad inmensa de paquetes para extender la funcionalidad puesta a disposición, pero que se subdivide en versiones que funcionan o solo con las versiones 2.x o de las 3.x de Python. Yo uso la versión 3.5.1
esta imagen, por bonita que parezca, no implementa widgets como la imagen de un instrumento análogo, sino solo como mostrar o datos digitales y imágenes creadas a base de datos que son mostrados en la pantalla como curvas para lo que se usa un widget llamado "Canvas"en Tkinter por ejemplo. Un instrumento análogo debería permitir definir entre que valores puede cambiar el dato y después poner la aguja de acuerdo al valor de los datos.
Claro, existen programas donde es posible crear datos basándose en gráficas vectoriales, pero debe haber alguna herramienta que ofrezca tal funcionalidad!
Para no limitar mi punto de vista en estas investigaciones conscientemente investigo que otras herramientas existen para crear el GUI que ejecutaré en la Raspi finalmente. "Qt" es un ejemplo. Pero también veo la posibilidad de crear el GUI usando herramientas disponibles en javascript. Aquí se gana el acceso a herramientas usadas para el diseño de páginas en el Internet. Pero es posible conectar widgets creados en tal entorno a Python y finalmente al nivel físico de mi placa Raspi? Será posible instalar y ejecutar todo esto en el entorno de la Raspi? Cual camino es el mas sensato a seguir? Aquí estoy abierto y a la espera de consejos de ustedes mis lectores del hilo!
También aquí entra a jugar la posibilidad de usar "Crossplatform" herramientas! Programar en el entorno de Windows 7 en mi ordenador y ejecutar y analizar el comportamiento en la placa Raspi! Como funciona todo esto si me decido por un camino en conjunto en el entorno ofrecido por la herramienta "Wing" de wingware que me acabé comprando una licencia personal no comercial por su apoyo de hacer "crossplatform" desarrollo del PC a la placa Raspi con Python!
Leyendo toda la información que publico ahora el asunto suena apto de crear problemas que no puedo solucionar! Claro, que una vez que mi placa Raspi se comunique con el ordenador por Wifi, que aprenda y logre implementar la funcionalidad de "crossplatform" de mi herramienta "Wing" implementaré aquella solución con foco en simple, que me permita controlar el parpadeo del LED por un GUI y actualmente no veo problema alguno en lograr esto con Python y Tkinter/tk. Pero lo que aquí pongo como prerequisito me exige a mi, por mi decisión de hacerlo en tal forma", entender como Samba o "sh" funcionan y permiten e implementan la comunicación entre mi Raspi y la herramienta Wing por la cual ya me he decidido!