Présentation • Fonctionnement général • Démarrage rapide • Structure de fichiers • Compilation • Évolutions • Dépannages • Support
Cette documentation s'adresse aux développeurs souhaitant comprendre rapidement le fonctionnement général de l'application Arbalet Meki Live. Elle comporte également quelques conseils et instructions relatifs au développement et à la compilation du projet.
À son lancement l'application démarre un serveur web (Express.js) écoutant sur le port 3000. Celui-ci délivre aux clients les différents fichiers composants l'interface élève. La communication entre les clients et le serveur se fait ensuite par le biais de web-sockets.La communication entre le serveur et la table se fait via USB à travers le port série.
- Avoir la dernière version de Node.Js installée
- Etre administrateur sur sa machine
- Cloner la dernière version du projet.
- Se rendre dans le dossier
desktop
et installer les modules:
$ npm install
- Lancer le projet:
$ npm start
En cas d'erreur lors du lancement, consulter la section Dépannages
L'application desktop comprend deux fichiers JavaScript principaux:
- main.js composant le programme principal
- renderer.js comprenant le code s'exécutant dans la vue d'ElectronJS
Les deux communiquent via un système de "messages" sous la forme d'évènements.
Tout le code relatif à l'interface élève se trouve dans le dossier public
.
On y distingue deux fichiers principaux:
- mainClient.js comprenant les fonctionnalités principales de l'application
- front.js comprenant toutes les méthodes relatives à l'affichage et l'intéraction de la page web
Les différents fichiers utilisés par Blockly se trouvent dans le dossier blockly
.
Le fichier blocklyWorker.js comprend le code du web-worker interprétant le code généré par Blockly. Ce système de worker permet d'exécuter ce code dans un thread différent du thread principal empechant tout bloquage. Cela permet aussi de stopper l'exécution du code à tout moment.
Vous trouverez plus d'informations sur les Web-Workers ici.
Pour compiler le projet et générer un exécutable vous devez vous trouver sur la plateforme correspondante à la cible (être sur Linux pour compiler pour Linux, etc...).
Rendez-vous dans le dossier desktop
et exécutez la commande suivante:
$ npm run dist
Les exécutables générés sont ensuite trouvables dans le dossier `dist`.
Les différents paramètres relatifs à la compilation se trouvent dans le fichier `package.json`.
Pour la compilation nous utilisons le module `electron-builder`. Vous trouverez plus d'informations concernant la compilation en suivant ce lien.
La solution proposée ici est une solution temporaire puisque nous utilisons dans cette version un Arduino "classique" comportant un custom firmware Firmata ainsi que les librairies Johnny-Five et Node-Pixel afin de communiquer avec celui-ci.
La version finale d'Arbalet Meki sera équipée d'une carte ESP32 tournant avec un firmware "maison". Ainsi Arbalet Meki aura un fonctionnement hybride lui permettant d'avoir deux modes: autonome et atelier.
Cette version est en avancement et vous pourrez trouver les informations nécessaires à sa mise en oeuvre dans cette documentation.
La création de blocs se fait par l'intermédiaire de l'éditeur de programmation visuelle de Blockly. Il se trouve à cette adresse avec la documentation associé à l'éditeur Blockly Developer Tools.
Les blocs créés sont stockés dans différents fichiers :
- Définition des blocs en JSON dans
blockdefinition.js
- Définition du code JavaScript correspondant aux blocs dans
generatorstub.js
- Affichage des blocs dans la balise xml présente dans
index.html
Arbalet Meki Live est pour l'instant uniquement disponible en français. Seuls les blocs Blockly bénéficient d'une traduction s'adaptant à la langue de l'ordinateur serveur.
Il faudrait mettre en place un système de traduction performant. Une piste qui nous paraissait intéressante est celle du module npm i18n.
Certains modules nécessitent une recompilation afin d'être compatibles avec Electron. Cela peut générer un message d'erreur lors du lancement du projet en développement. C'est notamment le cas du module serial-port
.
Pour recompiler, exécutez la commande suivante dans le dossier desktop
:
$ node_modules/.bin/electron-rebuild
Il arrive que le module fsevents
génère des erreurs lors de la compilation sur MacOS.
Pour palier à ce problème nous vous conseillons d'utiliser le gestionnaire de paquets yarn
à la place de npm.
Pour l'installer exécutez la commande suivante:
$ npm install -g yarn
Lancez ensuite la compilation de cette manière:
$ yarn dist
-
Website at
arbaletproject.org
-
Twitter at
@arbalet_project
-
Linkedin at
arbalet
-
Blog at
arbalet-blog