Dans les chapitres 13 à 17, nous avons vu comment utiliser
le framebuffer pour afficher des dessins sur l’écrans du raspberry. Mais
continuer à utiliser cette solution est terriblement couteuse en temps de
développement car il faut tout gérer (dessin, police, couleurs etc.)
Pour pouvoir aller plus loin, il va falloir utiliser des
librairies graphiques qui vont faire une grand part de notre travail. Mais ici
au lieu d’utiliser des libraires comme openvg ou QT , nous allons nous plonger dans la librairie
de X11 car X11 est le système graphique de base de tous les Unix et donc de
Linux et donc de raspbian. Si vous avez déjà entendu parler de X11, vous pensez
que ce système graphique est très lourd à mettre en place et à programmer car
il permet de créer des fenêtres, des boutons, des menus des dessins et il possède
des dizaines de fonctions !!. C’est ce que nous allons voir dans les
chapitres suivants de ce blog.
Tout d’abord nous allons mettre en place les outils nécessaires
au développement avec X11 sur le raspberry.
Donc chargement de la librairie nécessaire : sudo apt-get install libx11-dev
Puis adaptation du script de compilation pour appeler la librairie
et dont voici un exemple :
#compilation assembleur avec librairie X11#echo $0,$1echo "Compilation de "$1".s"as -o $1".o" $1".s" -a >listingX11.txtgcc -o $1 $1".o" ~/vincent/asm/routinesARM.o -e main -lX11 -L/usr/lpp/X11/libecho "Fin de compilation."
(remarque : routinesARM.o contient les objets de mes
propres routines vues dans les chapitres précédents).
En lisant la documentation sur X11, j’apprends que ce
système est à base de client-serveur et qu’il possible d’afficher les écrans
sur n’importe quel autre ordinateur disposant d’un serveur X11. Cela me
convient car je pourrais travailler de mon ordinateur sous windows, de compiler
et lancer les programmes sur le raspberry avec une connexion ssh par putty et de voir les résultats sur l’écran
du PC. Pour cela, j’installe le serveur gratuit XMing disponible à l’adresse https://sourceforge.net/projects/xming/
L’installation se passe sans problème. Si le serveur ne se
lance pas, il faut l’activer en lançant le programme Xlaunch.exe se trouvant
dans le répertoire d’installation sur votre PC (chosir les options fenêtes
multiples puis laisser toutes les autres par défaut).
Maintenant il faut créer une connexion ssh par putty
spéciale en configurant l’option enable X11 forwarding se trouvant dans le menu
connexion sous-menu SSH :
Bien entendu, il faut renseigner l’adresse IP de votre raspberry
et le port et sauvegarder la configuration sous un nom adéquat ( par exemple
raspX11). Maintenant il ne vous reste plus qu’à ouvrir une session ssh avec
cette configuration de saisir l’identifiant de connexion et le mot de passe.
Pour vérifier si cela fonctionne, vous lancer l’application
graphique fournie en standard sur le raspberry : leafpad et normalement
vous devez voir apparaitre sur votre ordinateur Window un petit éditeur de
texte. Super non ?
Si vous aller dans le menu ouvrir, vous voyez que
l’arborescence qui s’affiche est bien celle de votre raspberry et pas celle de
votre ordinateur windows, preuve que l’application leafpad s’exécute sur le
raspberry et que c’est seulement l’affichage (et le clavier et la souris) qui
est géré par le serveur XMing sur votre PC.
Il faut aussi rechercher la documentation sur Internet
concernant X11 (et il en a beaucoup !!). Un excellent document en anglais écrit
pour le langage C par Ross Maloney nous servira de trame pour partir à la
découverte des nombreuses fonctions des libraires X11. A télécharger sur le
site : http://yenolam.com/writings/xlibbook-0.5.pdf
Et une référence sur les fonctions X11 : https://www.x.org/docs/X11/xlib.pdf
En français on trouve : http://pficheux.free.fr/articles/lmf/xlib/#21
https://fr.wikipedia.org/wiki/X_Window_System
Toutes les fonctions sont aussi décrites sur le site en anglais de Christophe Tronche : https://tronche.com/gui/x/xlib/
Toutes les fonctions sont aussi décrites sur le site en anglais de Christophe Tronche : https://tronche.com/gui/x/xlib/
Et pour tester tout cela voici un premier petit programme
qui va faire appel à la fonction XOpenDisplay pour établir une connexion avec
le serveur d’affichage. Si la connexion est ok, nous récupérons un pointeur
vers une structure appelée Display (Affichage) et qui contient les informations
sur la connexion (plus loin dans le programme, nous afficherons le contenu de
cette structure pour voir ce qu’elle contient). Ensuite nous nous contentons
d’appel la fonction XBell en lui passant dans le registre r0 le pointeur du
Display et dans r1 la valeur 100 (volume maximum). Cette fonction fait biper le
haut-parleur de votre PC grâce au serveur XMing. Puis nous fermons le Display par la fonction XCloseDisplay
pour libérer les ressources utilisées et nous terminons le programme.
Vous remarquerez que les noms de fonctions commencent tous
par X et que nous passons le pointeur du Display dans le registre r0 et tous
les programmes commenceront par cet appel de connexion. Ce premier programme
doit fonctionner sans problème !! Ah oui, n’oubliez pas d’activer votre haut-parleur
sur votre PC pour entendre le son.
Aucun commentaire:
Enregistrer un commentaire