Pages: [1]   Go Down
Author Topic: Question a deux balles  (Read 532 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir,

Lorsque que j'écris sur le port série 0x02b avec cette commande : Serial.print(0x02b , HEX);
Cela m'écrit 2B

Quand je fais une opération simple avec :

x = 0xff - 0x2b
Serial.print(x , HEX);

Sa m'écrit FFFFFFD4 au lieu de D4, comment faire pour empêcher sa ?

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour la première question, tu veux écrire dans la liaison série "0x02b" tel quel ou bien le caractère ascii correspondant ("+") ?
Si tu veux écrire 0x02b utilise simplement les guillemets pour écrire la chaîne de caractères,
si c'est pour écrire '+', écrit directement la donnée en binaire avec Serial.write().

En revanche si c'est pour écrire le contenu d'une variable en hexadécimal comme pour la deuxième question, c'est effectivement Serial.print(x, HEX) qu'il faut utiliser.

À mon avis s'il écrit six 'F' devant c'est à cause du type de la variable, un hexadécimal sur deux caractères est un octet, essaie avec Serial.print((byte)x, HEX).

Sinon tu peux aller voir du côté des fonctions de formatage qui permettent une meilleur maîtrise de l'affichage des chaînes, mais qui sont plus complexes (et en plus je ne sais pas du tout comment elles se comportent avec l'arduino).

http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html

Si tu utilises ces fonctions, je crois qu'il faudra plutôt passer par une chaine  temporaire en utilisant sprintf car elles ne permettent pas d'écrire directement dans la liaison série.
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Sinon il suffit d'utiliser sprintf

Code:
char str[16] ;
int x = 0xff - 0x2b;
sprintf( str, "%08x", x ) ;
Serial.print(str);
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, c'est pour écrire directement en hexa.

Merci pour vos réponses, j’essaie tout sa demain smiley
Logged

Pages: [1]   Go Up
Jump to: