Paso 15: Cliente GUI
Como se dijo antes, usaremos Shoes.rb, un contenedor de GUI para código Ruby. El proyecto de zapatos es bastante limpio - Compruebe hacia fuera su sitio definitivamente. Pude ha optado para utilizar Java, pero decidió que sería mejor probar un marco diferente.
Se adjunta el código de cliente. Como se puede ver, es un archivo relativamente normal .rb rubí.
Gran parte de este código es auto explicativo, así que sólo voy a ir sobre las partes que podrían ser confusas.
Aquí, utilizamos el bloque de 'movimiento' de zapato para capturar el movimiento del ratón. Guardamos el nuevo x, y del ratón como _x y _y. Esa primera declaración, verifique que x y y ambos existen y luego especifican que sólo cuidamos x / y los valores se cambian si el producto inicial están a 0 y 500 píxeles (un cuadrado de 500 x 500 píxeles).
Si satisface nuestra condición, actualizaremos con nuevas posiciones.
A continuación, tenemos nuestro bloque que se encarga realmente enviando mensajes a nuestro servidor. Los comentarios explican un poco.:
Definimos x_scaler y y_scaler como los formateadores para raw X y Y de entrada, para darle un valor que es más amigable para la configuración tenemos en el servidor de Pi.
El bloque de animate(2) significa que se ejecute este comando dos veces cada segundo. Shoes.RB permite cosas correr tan rápido como 8 veces un segundo, pero para nuestros propósitos, dos veces un segundo es suficiente. Esencialmente controla la velocidad de muestreo de (con qué frecuencia estamos encuestando las variables)
Dentro de ese bloque, manejamos y diferente. En nuestro caso, significa la torreta, que es controlada por un PWM servo motor del pulso. Esto significa que sólo tenemos que darle un valor para ir a, y así nos podemos alimentar directamente a y_scaler
Por el contrario, ya que significa ángulo de guiñada de la pi, que es controlado por nuestros motores funcionando a una longitud de tiempo variable, este hecho tendrá que ser un número que significa el cambio en valor desde el último sondeo. Un poco más complicado, pero no de cohete-Ciencias Matemáticas.
Al final de este bloque de salvar y para comparación futura para la próxima votación del ciclo.
El resto del cliente código de GUI es relativamente auto explicativo, por lo que no dediquen al punto de intentar ir sobre él aquí.