Archive 07/10/2020.

TP7: Affichage des traces puts ou printf?

GiLe

Bonjour,

Mes traces ne s’affichent pas toujours…

Q1 J’ai remarqué que vous alterniez l’affichage entre puts et printf. Y a t-il une raison profonde liée à RIOT?

Q2 Pour quelle raison mes traces ne s’affichent pas?
N’ayant pas à créer du code de qualité pro cela ne me gêne pas vraiment. Dans ma vie pro… plus surement!

Cordialement

aabadie2

La fonction puts est utlisée lorsqu’il s’agit d’afficher une chaine de caractère constante, elle ne prend donc qu’un seul argument, qui est la chaine à afficher. Cette fonction ajoute aussi automatiquement un caractère \n en fin de ligne.

La fonctione printf est plus complexe car elle prend en paramètre un patron de chaine de caratère et des paramètres supplémentaires qui sont des variables à remplacer dans le patron de la chaine de caractère (les %s, %d, etc).

Voir:

Pour quelle raison mes traces ne s’affichent pas?

Impossible de répondre à cette question sans regarder votre code. Je pourrai vous aider si vous mettez le contenu du fichier main.c avec votre question.

GiLe

Bonjour,
Avez-vous testé tout vos programmes? Car les problèmes d’affichage de traces incorrectes arrivent même avec certains de vos programmes d’exemple… :slightly_frowning_face:

C’est promis dès que je trouve une des traces ne fonctionnant pas correctement je vous la transmet!

aabadie2

Oui, ils ont été testés.

les problèmes d’affichage de traces incorrectes arrivent même avec certains de vos programmes d’exemple

De quels programmes s’agit-il ?

GiLe

les problèmes d’affichage de traces incorrectes arrivent même avec certains de vos programmes d’exemple

De quels programmes s’agit-il ?

voir ma réponse précedente

tropic78

Bonjour,
Même constat pour moi pour les printf/put qui ne s’affichent pas toujours.
Exemple : https://github.com/RIOT-OS/RIOT/blob/master/tests/driver_isl29020/main.c
Seuls les “printf” de la boucle de lecture s’affichent. J’ai également essayé de remplacer les “put” par des “printf” même résultat.

Cordialement,

aabadie2

Bonjour,

Dans ce cas, le problème est lié au fait qu’il y a un délai entre le moment où le programme vient d’être flashé sur la carte et le moment où le terminal se connecte au port série de la carte.
Pendant ce délai, RIOT a le temps de booter et d’afficher les premiers messages mais le terminal se connecte trop tard pour que vous les voyez.
La solution est de connecter le terminal (la cible term) avant de flasher le programme.

GiLe

@tropic78 Je vois que nous avons eu le même reflexe: utiliser les ressources disponibles et recommandées par les Teaching Assistants!!! Et les mêmes problèmes par ailleurs… Tu t’en es sorti comment? D’après le commentaire ci-dessus un sleep initial du programme .c devrait ralentir l’affichage. Ce workaround ne me plait pas. Quant à la solution proposée,
La solution est de connecter le terminal (la cible term) avant de flasher le programme.
comment l’implementer. Modifier mon makefile?
Merci à l’avance

aabadie2

Il suffit d’ouvrir de lancer la console série dans un terminal, la garder ouverte, puis de retourner dans le notebook pour compiler. Quand la compilation se termine, vous devriez avoir les messages qui apparaissent dans la console série.

D’après le commentaire ci-dessus un sleep initial du programme .c devrait ralentir l’affichage

C’est effectivement aussi possible de faire comme et c’est d’ailleurs la méthode qui est employée pour le TP hello_world (TP3).