autre chose : comment installe t on le logiciel ITEAD / NEXTION sous linux ?
On ne peut pas ils n'ont qu'une version Windows. Donc je n'utilise pas leurs produits... j'ai regardé à un moment (il y a longtemps à à titre de curiosité intellectuelle) leurs spécifications et solution
En gros
- vous utilisez leur logiciel pour créer une interface utilisateur (modèle vue contrôleur), qui se compose de plusieurs pages (chacune avec un numéro) et un certain nombre d'objets sur ces pages (chacun avec un numéro et un petit nom). ça génère un fichier qui doit être chargé dans la mémoire de l'écran et qui va communiquer avec votre programme Arduino sur le port série.
Pour le charger vous concevez et générez le fichier de définition de l'interface avec leur logiciel,puis vous le sauvez sur une carte SD, mettez la carte SD dans l'écran, rebootez l'écran, ça lit le modèle en mémoire de l'écran. Vous retirez la carte SD et vous rebootez et votre interface utilisateur apparaît alors et les échanges entre l'écran et votre Arduino vont s'effectuer par le biais de communication série 9600 bauds. (Vous pouvez aussi connecter un adaptateur USB vers série (genre FTDI) et depuis le logiciel uploader directement par le port série le modèle dans la mémoire de l'écran. Ce sera plus lent que par la carte SD mais pour des petits modèles c'est pratique (la gestion du reboot est automatique et l'interface s'affiche directo))
Une fois le dessin de l'écran défini, avant de charger dans l'écran, tous les éléments visuellement interactifs ou modifiables peuvent/doivent etre paramètrés pour envoyer ou recevoir des messages
Par exemple (simplification un peu abusive pour illustrer):
-
si vous crééz une zone de texte dans l'éditeur avec comme nom t0 et qu'ensuite vous envoyez un message par le port série qui va dire t0.txt="125" alors l'affichage mettra à jour le champ texte et présentera la valeur 125. C'est testable directement dans leur outil
-
si vous créez une barre de défilement (slider) avec le nom h1 par exemple et que dans l'éditeur vous le configurez pour envoyer l'ID du slider quand il est bougé et relâché (touch release event), si vous passez en mode simulation et bougez le slider à la souris, vous pouvez voir le message qui sera envoyé depuis l'écran envers votre micro contrôleur par le port série (une suite de code hexa décimaux genre "0x65 0x00 0x01 0x00 0xFF 0xFF 0xFF"). Votre Arduino doit donc décoder ce langage barabare pour comprendre que le slider a bougé... c'est un peu pénible à faire à la main et c'est la que les libraires sont utiles
-
la librairie officielle se paramètre en modifiant un fichier de config pour dire quels sont les ports séries à utiliser puis par un modèle déclaratif de ce qui existe sur l'écran --> si vous avez créé un objet texte dans l'interface sur la page 0, objet N° 10 de petit nom t0 alors il faut instancier un objet texte dans votre programme Arduino par exempleNexText t0 = NexText(0,10,"t0"); // No de page, No d'objet, Nom de l'objet , idem pour les boutons puis vous listez tous ses objets dans un tableau de pointeurs vers des instances d'objets de type NexTouch terminé par NULL par exemple NexTouch * liste = {&t0, NULL};
Pour les éléments actifs, genre boutons, sliders, etc vous définissez alors pour chacun une fonction dans votre code et associez cette fonction à la réception d'un événement spécifique: sur le bouton par exemple quand il est appuyé ou relâché et l'associez à votre objet bouton (c'est ce qu'on appelle le callBack, la librairie appellera automatiquement cette fonction pour vous quand elle reçoit l'événement)
C'est dans le code de cette fonction callBack que vous faites vos modifications et calculs, puis si vous avez instantané un objet texte par exemple, vous pouvez appeler une méthode sur cet objet pour changer l'affichage - l'objet se débrouillera pour envoyer la bonne commande sur le bon port série genre
char message[] = "Hello";
t0.setText(message)
affichera Hello dans le champs text parce que l'objet se sera chargé d'envoyer t0.txt="Hello" (suivi de trois 0xFF) sur le port série pour vous
Le setup commence alors par un appel à nexInit(); (avant votre Serial.begin() si vous utilisez la fonction de debug), vous attachez les callbacks, et dans la loop il suffit d'appeler souvent nexLoop(liste); pour dire à la librairie d'aller écouter sur le port série si un Message en provenance d'un des objets de la liste à été reçu et si oui d'appeler le bon callback pour vous
J'espère que ça clarifie un peu - prenez un de leurs exemples dans la librairie pour voir comment tout cela se fait