Skip to content

Latest commit

 

History

History
132 lines (106 loc) · 6.99 KB

DEVDOC.md

File metadata and controls

132 lines (106 loc) · 6.99 KB


Arbalet

Arbalet Meki Live

twitter

Documentation développeur

PrésentationFonctionnement généralDémarrage rapideStructure de fichiersCompilationÉvolutionsDépannagesSupport

Présentation

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.

Fonctionnement général

schema
À 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.

Démarrage rapide

Pré-requis

  • Avoir la dernière version de Node.Js installée
  • Etre administrateur sur sa machine

Installation

  1. Cloner la dernière version du projet.
  2. Se rendre dans le dossier desktop et installer les modules:
$ npm install
  1. Lancer le projet:
$ npm start

En cas d'erreur lors du lancement, consulter la section Dépannages

Structure de fichiers

Desktop

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.

Navigateur

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.

Compilation

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.

Évolutions

Hardware

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.

Ajout de nouveaux blocs Blockly

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 :

Internationalisation

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.

Dépannages

Erreur de module au lancement

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

Erreur de compilation sur MacOS

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

Support