MagPI 9 Page 22

De Le French MagPi
Aller à : Navigation, rechercher

Sommaire

Introduction à VALA

Ecriture d'un contrôleur web simple pour la carte RPI LedBorg

Le langage Vala est, parmi les langages de programmation, un petit nouveau et il est encore en observation chez de nombreux programmeurs. Nous allons utiliser Vala pour communiquer avec LedBorg de www.piborg.com/ledborg via Internet. [NDLR: dans ce numéro, nous verrons comment faire la même chose avec Python).]

Vala est un langage de style C# construit sur le système objet GLib fournissant un accès facile aux bibliothèques et sous-systèmes de base de GNOME. Le compilateur, valac, transforme le code Vala en C, et à son tour déclenche le compilateur C du système pour produire du code natif. Cela signifie que, contrairement à C#, il n'y a pas de framework .NET ou de machine virtuelle. En effet, c'est une façon d'écrire des applications C de plus haut niveau. La page d'accueil du projet est https://live.gnome.org/Vala.

Bien que Vala soit basé sur la GLib et les bibliothèques GNOME, il ne sert pas qu'au développement d'applications de bureau GNOME et convient également pour écrire des applications et services pour la console.

LedBorg

La carte LedBorg est pré-assemblée, elle se connecte sur les broches GPIO et comprend une DEL RVB ultra-lumineuse. Chaque canal - rouge, vert et bleu, a trois intensités : éteint, demi luminosité, et pleine luminosité. Le pilote LedBorg crée le fichier de périphérique /dev/ledborg. Il s'agit d'un excellent exemple de la philosophie UNIX au travail avec les périphériques vus comme des fichiers au lieu de mystérieuses API. Nous pouvons lire et écrire dans /dev/ledborg comme nous le ferions avec n'importe quel autre fichier, par exemple :

echo "202" > /dev/ledborg

Les trois chiffres contrôlent R, V et B, chacun valant 0, 1 ou 2, et correspondant aux trois intensités, par exemple : '202' fait émettre un violet brillant à la LedBorg (rouge + bleu).

Contrôle par le réseau

J'ai décidé qu'un moyen facile de contrôler LedBorg à distance était d'utiliser le protocole bien connu HTTP. En utilisant LibSoup dans Vala, il est facile de mettre en place un serveur HTTP léger qui peut répondre aux requêtes. Les tests devraient être simples depuis n'importe quel navigateur Web sur le réseau.

Le serveur accepte les requêtes GET au format d'URL suivant :

/?action=SetColour&red=x&green=y&blue=z

où x, y et z sont des nombres entiers compris entre 0 et 2.

Pour faciliter l'utilisation, le programme répond aussi à toutes les requêtes à partir d'un formulaire HTML minimum, contenant une liste déroulante par couleur, et un bouton submit.

Le Code

Pour essayer ce code, les paquets suivants seront installés avec leurs dépendances. En supposant que Raspbian/Debian est l'OS que vous utilisez :

$ sudo apt-get install valac \
libsoup2.4-dev

Après avoir entré le code ci-dessous, et l'avoir enregistré dans LedBorgSimpleServer.vala vous pouvez alors le compiler avec la commande suivante :

$ valac --pkg libsoup-2.4 --pkg \
gio-2.0 --pkg posix --thread -v \
LedBorgSimpleServer.vala

Vous pouvez entrer cette ligne de commande dans un fichier texte et l'enregistrer sous compile.sh - puis rendre ce fichier exécutable avec :

$ chmod +x compile.sh

Vous pouvez recompiler avec

$ ./compile.sh

L'option -v génère une sortie verbeuse, donnant une idée de ce qui se passe. Si vous voulez voir le code C généré, ajoutez l'option -C pour obtenir LedBorgSimpleServer.c

Exécutez le programme avec ./LedBorgSimpleServer

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils