Go Down

Topic: [Lib] EZPrint : Simplifiez l'usage de Serial, Client, et classes similaire (Read 2023 times) previous topic - next topic

barbudor

Bonjour

Avec un environnement où le principal moyen de debug est la liaison série, je peste souvent sur l'absence d'un moyen simple d'afficher des textes complexes.
Bref, mon bon vieux [font=Courier]printf()[/font] me manque !

Il y a de bonnes raisons de ne pas chercher à utiliser [font=Courier]printf()[/font] ou ne serais-ce que [font=Courier]sprintf()[/font] mais sommes nous pour autant obligés de nous taper 15 lignes de Serial.print() chaque fois que nous voulons afficher une phrase constituée de chaines de caractères, de variables etc .... ???

NON !

EZPrint est une lib qui recrée les surchages de l'opérateur << souvent utilisé en C++ avec cout.
Grace à EZPrint(c) ;) il est facile d'écrire ce genre de code beaucoup plus léger et beaucoup plus lisible :

Code: [Select]
  Serial << "This is a decimal value : " << dec << 123 << endl;
  Serial << "And this is a binary value : " << bin << 123 << endl;
  Serial << _PSTR("This string is stored in Flash memory" ) << endl;
  EZPrintDigits( 5 );
  Serial << "A float with 5 decimal digits : " << 4.0/3.0 << endl; 


C'est mieux hein ?
Et çà marche avec n'importe quel classe dérivée de Stream/Print telles-que (et sans limitation) :
- Tous les Serial, Serial2, Serial3, ...
- SoftwareSerial
- Client (Ethernet)
- LiquidCrystal
et bien d'autres .....

Comme d'hab, récupérez le ZIP ci-dessous et dezippez le dans votre répertoire arduino/Libraries.
Ensuite un simple #include "EZPrint.h" vous permettra de bénéficier de ses (nombreux) avantages  :D

ATTENTION : Pour mettre une chaîne de caractère en Flash, il faut utiliser _PSTR() eu lieu de PSTR().

---------
Historique
1.0   20 mai 2012             version initiale
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

fdufnews


gerse

Bonjour,
C'est quoi les bonnes raisons pour ne pas utiliser printf et sprintf?
Gerse

barbudor

Printf() sous entend l'existence d'un périphérique de sortie standard ce qui n'existe pas dans l'environnement arduino. Printf() n'est pas implémenté.

Sprintf() marche a condition de s'y prendre en 2 fois (sprintf puis serial.print) et d'allouer un buffer suffisant en permanence.

L'avantage de cette solution est qu'elle ne requière pas de buffer supplémentaire et le code généré est strictement équivalent a celui qui le serait en utilisant des Serial.print() séparés.

De plus il marche avec toute classe dérivée de Print (Serial, SoftwareSerial, EthernetClient, LiquidCrystal,...) Là où il n'est pas possible non plus d'utiliser fprintf() puisque la notion de gestionnaire de fichier n'est pas implémentée.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

skizoh

Salut:

Quote
Bref, mon bon vieux printf() me manque !


Je veux bien te croire c'est la même !!!  :0

Skizo !
Un tien vaux mieux que deux tu l'auras !

Go Up