Parlons Arduino > Bibliothèques

ArduiEmulator

(1/5) > >>

Thierry:
Pour moi qui développe professionnellement au quotidien avec Visual Studio de Microsoft sous Windows 10, utiliser l'IDE et ses ressources pour identifier un problème dans mes développements Arduino est une 'souffrance' permanente. Pas de vrai débogueur, un éditeur minimaliste... Alors dès le début de mes pérégrinations Arduinesques, j'ai tenté de trouver le moyen d'utiliser visual plutôt que l'IDE, mais aussi et surtout de tester mon code sans utiliser d'Arduino !

Des émulateurs existent sur le net ou ailleurs, mais ils ne permettent pas de voir l'évolution des variables pendant l'exécution, ni de suivre la progression du programme sur chaque ligne de code exécutée... Et ça, c'est dans le meilleurs des cas, lorsqu'ils permettent d'utiliser une bibliothèque maison...

Utilisant Visual Studio 2015 à l'époque, j'ai créé un projet ArduiEmulator dont le but initial n'était que de pouvoir compiler et lancer un fichier .ino sans aucune émulation. Juste de quoi voir ce qui se passe dans le setup... Pour ceux que cela intéresse, ce projet est en C++ managé, c'est à dire dans le Framework .Net. Si ces mots ne vous disent rien, ce n'est pas grave, ils ne seront utiles qu'à ceux qui voudront modifier l'émulateur. Rapidement, le besoin d'une véritable émulation pour les broches et un écran Lcd ont été nécessaires. En particulier au moment de développer et tester LcdUI.

Aujourd'hui, le projet s'est étendu, et il permet de simuler une mémoire EEPROM, une liaison série bidirectionnelle, un écran Lcd. Il dispose d'une console série pour voir passer les messages, d'une zone de saisie pour en envoyer par la liaison série, d'une liste des broches actives avec possibilité de les nommer pour plus de clarté, de la possibilité de cliquer dessus pour en changer l'état, etc...

Pour s'en servir il faut un Visual Studio 2015 ou 2017 Community qui est gratuit (https://www.visualstudio.com/fr/thank-you-downloading-visual-studio/?sku=Community&rel=15). Je sais que Visual existe sous Mac, mais je ne sais pas s'il est compatible, en particulier à cause de la partie .Net qui est obligatoire pour l'émulateur. Pour simplifier, nous considéreront pour la suite que l'on parle d'une version Windows.
Les croquis créés à l'aide de l'IDE vont par défaut dans 'Mes Documents/Arduino'. C'est là qu'il faudra décompresser le ArduiEmulator.zip que vous trouverez dans le répertoire extras de toutes mes bibliothèques (très) récentes. C'est d'ailleurs le même zip partout, il n'y a pas une version par bibliothèque...

Visual a besoin d'une 'solution' (un fichier .sln) pour travailler. Une solution est un ensemble de projets (fichiers .vcxproj) dont ArduiEmulator fait partie. Toujours dans mes bibliothèques récentes, se trouve un répertoire vstudio contenant une solution. Par exemple Accessories contient dans le répertoire 'Mes documents/Arduino/libraries/Accessories/vstudio' un fichier AccessoriesTestExe.sln qui permet de travailler avec l'émulateur.
Pour utiliser un fichier ino particulier, il faut modifier le fichier InoProjet.cpp dans Visual en remplaçant l'include du type

#include "../examples/locoduino.org/programme6/programme6.ino"

par le vôtre :

#include "../../MonCroquis/MonCroquis.ino"

Ensuite, F5 pour compiler et lancer, et vous vous retrouvez dans l'émulateur !

Il est également disponible pour Commanders, Accessories, LcdUi et DcDccNanoController. Bien sûr, certaines choses ne sont pas traitées, comme le DCC ou les bus CAN, I2C ou SPI. Mais si vous utilisez Commanders, alors vous aurez à disposition un nouveau type de bouton ButtonsCommanderKeyboard qui permet d'utiliser le clavier pour simuler des poussoirs. Il y a aussi une fonction pinName() pour nommer une broche. Pour les parties de code spécifiques à Visual, il y a un define VISUALSTUDIO pour faire la différence entre compilation dans Visual et ailleurs:

#ifdef VISUALSTUDIO
...
#endif

Cela permet par exemple d'isoler une partie liée au bus I2C puisque l'émulateur n'en fera rien.
Lors d'une compilation sur Visual Studio, on compile pour un Mega2560 avec 200 broches ! Les macros comme ACCESSORIES_DEBUG_MODE et ACCESSORIES_PRINT_ACCESSORIES sont activées par défaut.

Beaucoup de fonctions ne sont que purement décoratives et ne font rien, sauf permettre de compiler, comme la gestion des interruptions ou la bibliothèque Wire utilisée par le bus SPI. D'autres ont été complètement implémentées pour fonctionner, comme LiquidCrystal ou Serial. Je ne serais pas contre un peu d'aide pour continuer à étendre les fonctionnalités de cet émulateur !

bagou91:
bonjour,

j'ai ouvert la solution AccessoriesTestExe.sln avec VS2015.
après avoir rafraichit les chemins pour ArduiEmulator, j'ai lancé une compilation:

1ère erreur pour Test.exe: il demande DIO2.dll
j'essaye de compiler le projet DIO2: erreur arduino.h introuvable
j'ajoute arduino.h (se trouvant dans les sources de ArduiEmulator) dans le projet DIO2
encore erreur: arduiemulator.inc introuvable (et effectivement manquant dans les sources ArduiEmulator)

peux tu corriger tout cela et également mettre à jour ton sujet pour expliquer les imbrications des projets et les étapes à effectuer avant de pouvoir exécuter l'émulation arduino avec un .ino ?

Merci beaucoup

Thierry:
Je dois faire des essais.
Tu es le premier utilisateur de cette solution qui n'était pas destinée à une diffusion mondiale ! Il faut donc que je teste un peu en situation réelle (biblio fraîchement installées...) pour me retrouver dans le même cas que toi et pouvoir corriger... L'autre excuse, si je devais en avoir une, c'est que la plupart des autres contributeurs du site travaillent sous Linux ou Mac. Je n'avais donc pas la pression pour mettre ArduiEmulator à disposition, vu qu'il ne tourne pas dans ces environnements.
Je reviens au plus vite pour apporter des réponses.

bagou91:
Tu n'as pas besoin de t'excuser :)
Je trouve déjà formidable cette émulation en pouvant charger des sketch !  :D

Prends ton temps.
De mon coté je suis plus occuper sur les autres librairies ;)

Thierry:
J'ai refait les tests, ajouté les fichiers manquants et poussé toutes les bibliothèques avec les bonnes versions partout : DIO2, Accessories, Commanders, LcdUI et DcDccNanoController.
Je te conseille vivement d'enlever toutes ces bibliothèques, de les ré-installer, ainsi que ArduiEmulator. Chez moi, en partant d'un Libraries vide et sans ArduiEmulator du tout, j'ai  tout installé et cliqué sur les fichiers sln de Accessories, LcdUi et DcDccNanoController, et tout à démarré au premier F5...

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique