truc2geek

2014/08/30

Arduino : gérer des paramètres, part 3

Filed under: Arduino, Informatique, Programmation — truc2geek @ 13:20

Dans ce 3e tutoriel, on attaque vraiment la gestion des paramètres.
Enfin du concret!

Confusion paramètres/arguments

Une fonction peut soit n’attendre aucune valeur, soit attendre une ou plusieurs valeurs.

Par exemple, la fonction splitterChaine attend deux valeurs : « chaine » et « sep » :
01.png

On dit que la fonction attend des « arguments », aussi appelés « paramètres »…

Pour éviter toute confusion, dans cette série d’articles je parlerai toujours d’arguments pour désigner les valeurs attendues
par les fonctions.

Conception

On va utiliser deux tableaux de type String :
le 1er, tabParamCode, stocke le code qui sert d’identifiant à chaque paramètre
le 2e, tabParamValeur, stocke la valeur de chaque paramètre.

Ces deux tableaux contiendront bien sûr le même nombre d’éléments.
Le code tabParamCode[0] correspondra à la valeur tabParamValeur[0], et ainsi de suite.
Admettons qu’on aie un paramètre dont le code est « ComSerie_Bauds ».
pour récupérer la valeur de ce paramètre, on parcourt le tableau tabParamCode, et quand on trouve le code :
on retient l’index de ce code dans le tableau
on récupère la valeur stockée dans le tableau tabParamValeur, au même index.

Une constante, nbParam, contient comme son nom l’indique, le nombre de paramètres.
Elle est utilisée pour définir le nombre d’éléments stockés dans les deux tableaux.
J’ai donc fait le choix de définir le nombre de paramètres de manière fixe, ce qui est plutôt logique de toute façon :
quand on a terminé de développer une application, on connaît le nombre de paramètres utilisés.

Pour l’instant, on laisse de côté la fonctionnalité qui permettrait de vérifier si une valeur serait valide pour un paramètre.

Dev

On repart de la version 1.3d de TesterSerie.

On commence par créer un nouvel onglet, nommé « Param », dans lequel on place :

La fonction chargerJeuParamDefaut, qui sera appelée au démarrage de l’application :
16.png

La fonction donneValeurParam(), qui cherche un code dans les paramètres et retourne la valeur actuelle du paramètre :
17.png

Et enfin, la fonction modifierValeurParam :
18.png

A la suite, des fonctions de test.
19.png

On reprend le principe des tests lancés via le PC, comme dans l’article précédent.
On a ici aussi, 4 fonctions de test, qu’on pourra déclencher en saisissant une lettre de « e » à « h » :
20.png

Dans l’onglet principal :

13c.png

La fonction setup() :

14.png

Un extrait de la fonction loop() :

15.png

 test…

02.png

Alors comment dire, normalement au démarrage on avait des choses qui s’affichaient…

J’entre ‘a’ pour tester la fonction splitterChaine() avec le premier jeu de test, comme dans l’article précédent :
03.png

Le programme reconnaît bien la saisie de la touche « a », et appelle bien la fonction testSplitterChaine() qui appelle à
son tour la fonction splitterChaine(), mais là encore peu de données sont affichées…

Nouvel essai avec la touche « b » :
04.png

Ok, là aussi  la touche « b » est reconnue mais après, pas grand-chose…

Euh…

Peut-être une erreur de programmation, qui pour une raison étrange déclencherait ce genre de réaction?
Je commente tout mon nouveau code, et relance le programme :

05.png

Quelques essais :

06.png

07.png

08.png

Quand mes nouvelles fonctions sont commentées, le reste de l’application fonctionne. Bizarre…

Nouveau test : je décommente la première des nouvelles fonctions, avec l’intention de décommenter une à une toutes les fonctions pour savoir laquelle pose problème.

Résultat :

09.png

Alors cette fois, on a un mélange des deux, en gros ça fonctionne un peu mais pas trop. Mmm…

C’est peut-être un problème de mémoire, quelque chose dans le genre.
Le tableau tab[] est déclaré avec 50 éléments, essayons avec 10 par exemple.

Pour cela, on effectue les modifs suivantes :

10.png

11b.png

On teste :

12.png
Ok, ces modifs ont résolu le problème, mais seule une fonction parmis les nouvelles, est décommentée.

Je décommente toutes les autres nouvelles fonctions, avec un peu de chance tout ira bien :

Le début s’est bien passé, les tests avec la saisie de « a » et « d » se sont bien passés, je saisis maintenant « e » pour
lancer le traitement « testParam1() », qui liste les paramètres :

21.png

Ok super : la saisie du caractère « e » est bien interprétée, la fonction lancerTestParam() est appelée, et celle-ci
appelle bien la fonction testParam1() qui affiche la liste des paramètres.

La saisie de la lettre « h » doit appeler testParam4() qui affiche seulement la valeur du paramètre « Ftp_MotDePasse » :
22.png

Ok, parfait!

Maintenant je saisis la lettre « f » pour lancer testParam2(), qui redéfinit la valeur de ce paramètre, puis
de nouveau « h » pour afficher ce paramère, donc pour vérifier que la modification s’est bien passée :

23.png

Ok.

Et maintenant « g » pour redéfinir ce paramètre, puis « h » pour l’afficher :

24.png

Super!

Fin

On a maintenant la possibilité de :

  • initialiser un jeu de paramètres
  • récupérer la valeur d’un paramètre
  • modifier la valeur d’un paramètre

C’est déjà pas mal, mais on a plusieurs problèmes :

  • on a été obligés de limiter à 10 le nombre d’éléments du tableau tab[], et donc la fonction splitterChaine n’est exploitable
    que pour une chaîne contenant 10 valeurs maximum.
    Certes on n’utilise pas encore cette fonction, mais ça viendra ; on verra à ce moment-là si ça pose un gros problème ou pas.
  • on n’a pas encore développé le code qui permettra de vérifier si une valeur est valide pour un paramètre donné.

Voici le lien vers TesterSerie V1-3g.

 

Publicités

Laisser un commentaire »

Aucun commentaire pour l’instant.

RSS feed for comments on this post. TrackBack URI

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Propulsé par WordPress.com.

%d blogueurs aiment cette page :