Étape 15 : Client GUI
Comme déjà dit, nous allons utiliser Shoes.rb, un wrapper de GUI de code Ruby. Le projet de chaussures est assez propre - certainement vérifier leur site. Je pourrais avez choisi d’utiliser Java, mais a décidé, il serait plus propre essayer un cadre différent.
Le code client est attaché. Comme vous pouvez le voir, c’est un fichier relativement normale .rb rubis.
Une grande partie de ce code est explicite, donc je vais aller uniquement sur les parties qui pourraient être source de confusion.
Ici, nous utilisons le bloc « motion » de la chaussure pour capturer le mouvement de la souris. Nous enregistrons le nouveau x, y de la souris comme _x et FLF. Que d’abord si déclaration, nous vérifier que x et y existent et spécifiez ensuite que nous nous préoccupons seulement de x / y des valeurs qui sont modifiées si le produit initial sont à 0 et 500 pixels (un carré de 500 x 500 pixels).
Si satisfait à notre condition, nous mettrons à jour avec les nouvelles positions.
Ensuite, nous avons notre bloc qui est chargé d’envoyer réellement des messages sur notre serveur. Les commentaires expliquent un peu. :
Nous définissons les x_scaler et y_scaler comme les formateurs pour le brut X et Y entrée, pour lui donner une valeur qui est plus respectueux de la mise en place de nous avoir sur le serveur de Pi.
Le bloc de animate(2) signifie que nous allons courir cette commande deux fois par seconde. Shoes.RB permet aux choses à courir aussi vite que 8 fois une seconde, mais pour nos besoins, deux fois par seconde est suffisant. Ce contrôle essentiellement notre taux d’échantillonnage d’et (combien de fois nous sommes sondages ces variables)
Dans ce bloc, nous prenons en charge et différents. Dans notre cas, signifie la tourelle, qui est contrôlée par une impulsion de moteur servo PWM. Cela signifie que nous avons seulement besoin de lui donner une seule valeur pour aller à, et donc nous pouvons nourrir en directement à y_scaler
En revanche, depuis signifie angle de lacet de la pi, qui est contrôlée par nos moteurs fonctionnant à une longueur de temps variable, en fait, cela devra être un nombre qui indique la variation de valeur depuis la dernière interrogation. Un peu plus compliqué, mais pas sorcier de mathématiques.
À la fin de ce bloc, nous sauver et pour les comparer ultérieurement pour la prochaine interrogation cycle.
Le reste du client GUI code est relativement explicite, donc je ne sera pas affirmer le point essayer de monter dessus ici.