Comment " de Série.print () “” octets hexadécimaux?
Je suis de programmation Arduino et je suis en train de Serial.print()
octets au format hexadécimal "à ma façon" (continuez à lire pour plus d'informations).
Qui est, en utilisant le code suivant
byte byte1 = 0xA2;
byte byte2 = 0x05;
byte byte3 = 0x00;
Serial.println(byte1, HEX);
Serial.println(byte2, HEX);
Serial.println(byte3, HEX);
- Je obtenir la sortie suivante dans la Série du Moniteur:
A2
5
0
Cependant, j'aimerais sortie suivants:
A2
05
00
Dans les mots, je voudrais imprimer le "plein" la valeur hexadécimale y compris 0
s (05
au lieu de 0
et 00
au lieu de 0
).
Comment puis-je faire cela?
Vous pouvez imprimer une chaîne de caractères dans le format approprié, puis envoyer cette chaîne via le port série?
Ninja - Qu'entendez-vous par "imprimer une chaîne de caractères dans le format correct"? Comment puis-je faire?
Je doute Arduino prend en charge
Je ne suis pas familier avec ce qu'il prend en charge et le comment, mais un rapide google m'amène à croire que sprintf est disponible, mais pas pour les nombres à virgule flottante sans tracas. Il y a aussi ce que peut travailler pour vous: playground.arduino.cc/Main/Printf
Ninja - Qu'entendez-vous par "imprimer une chaîne de caractères dans le format correct"? Comment puis-je faire?
sprintf(buffer, "%02x", number); Serial.println(buffer);
Je doute Arduino prend en charge
sprintf
.Je ne suis pas familier avec ce qu'il prend en charge et le comment, mais un rapide google m'amène à croire que sprintf est disponible, mais pas pour les nombres à virgule flottante sans tracas. Il y a aussi ce que peut travailler pour vous: playground.arduino.cc/Main/Printf
OriginalL'auteur Backo | 2013-10-01
Vous devez vous connecter pour publier un commentaire.
Simple force brute de la méthode, est d'écrire une routine:
Et dans le code principal:
sprintf
fonction (comme @Retraité Ninja dit dans un commentaire précédent), il est plus simple... pourquoi devrais-je utiliser votre code?de charger le module de la taille. C'est, combien de code n'
sprintf
générer pour un système embarqué? Si votre dessin est trop grand, vous aurez à donner de certains luxes. Mais, pour un petit croquis de ce qui fonctionne est évidemment acceptable.OriginalL'auteur JackCColeman
désolé - pas assez de réputation pour commenter, mais a trouvé la réponse précédente n'est pas entièrement correct. En fait, la belle lumière de façon à code, il devrait être :
void p(octet X) {
if (X < 10) {Serial.print("0");}
...
en donnant le code:
Et dans le code principal:
espère que cette aide
X < 10
? 16 peut-être, mais pas 10;D'accord, juste le modifier pour tester < 0x10 et vous avez terminé 🙂
OriginalL'auteur G1l0uX
Utiliser sprintf pour imprimer dans une mémoire tampon (deux caractères par octet + terminateur null):
Ajouté de nouvelles lignes entre les deux pour obtenir à chaque sur la nouvelle ligne. À propos de "%02x", le % moyen voici les informations de formatage, 0 signifie pad avec 0, 2 signifie que le tampon d'entrée jusqu'à 2 caractères de large et x désigne donnez-moi ce que hexadécimal.
Pour d'autres options de mise en forme voir http://linux.die.net/man/3/sprintf
OriginalL'auteur thoredge
Essayez ceci:
Et dans le code principal:
OriginalL'auteur Keroronsk