La question m’a été posée par un utilisateur qui souhaitait envoyer des données en hexadécimal, stockées dans un fichier, vers une machine connectée sur le port série du Raspberry Pi.
Envoyer des données en hexadécimal sur le port série du Raspberry Pi
Ce court article est plutôt une note qui pourra aider ceux qui ont la même problématique.
Le fichier de données
Les données étant stockées dans un fichier, j’ai créé un fichier data dans lequel j’ai mis du texte. Le texte c’est… du binaire, codé en ASCII.
Et qui dit binaire, dit hexadécimal, ce dernier étant simplement une représentation plus accessible pour les humains du premier.
Du coup pour avoir autre chose que du texte ou des chiffres codés en ASCII, j’ai utilisé hexedit (après l’avoir installé sur le Raspberry Pi) pour transformer certains caractères en nombres hexa qui ne soient ni des chiffres ni des lettres :
Le port série du Raspberry Pi 3
Pour ceux qui n’ont pas vu passer l’information, il y a un lézard avec le port série du Pi 3. La fondation a discrètement utilisé l’UART matériel pour le Bluetooth, le port série se voyant connecté à un UART software au rabais.
Parfait si vous utilisez le Bluetooth, un peu em…bêtant si vous avez besoin réellement du port série. J’ai publié un article sur ce problème de port série il y a quelque temps. Pour configurer le Pi 3 et utiliser l’UART matériel sur le port série, j’ai choisi l’option 1 car je n’utilise pas le Bluetooth sur cette carte.
Le programme Python
send_data SVP ne m’incendiez pas, c’est en partie récupéré sur des exemples et en partie écrit sur un coin de table. Si vous faites mieux (et ce n’est pas difficile), je peux publier votre solution
Quoi qu’il en soit, vous pouvez télécharger le programme pour éviter de le saisir.
Rapidement :
Le programme initialise le port série puis il ouvre le fichier data qui contient les octets à envoyer. Il envoie les données à l’écran et au port série, et boucle tant que le fichier n’est pas fini.
Résultat sur un terminal
pi@raspberrypi:~/test_serie $ ./send_data b'\x02' b'\x03' b'\x04' b'5' b'6' b'7' b'8' b'\x7f' b'~' b'j' b'\xb5' b'\xc2' b'\xd4' b'\xe8' b'\xff' b''
Oui je sais il manque le premier octet je vous laisse voir pourquoi et modifier le programme. Ici c’était juste une POC !
Résultat sur le port série
Le mieux pour voir ce qui est envoyé par le port série, c’est ce regarder ce qui se passe avec… le port série !
Pour cela on va relier la sortie TxD à l’entrée RxD (un fil entre la patte 8 et la patte 10). Les plus anciens se souviendront des « bouchons » RS232 que tout technicien digne de ce nom trimballait dans sa valise pour tester les ports série chez le client.

Image du site http://tk5yp.free.fr/brochages/rs232.htm
Quand on avait oublié son bouchon DB9 ou DB25, un simple trombone faisait l’affaire
Une fois la boucle réalisée, tout ce qui sort sur TxD revient sur RxD. On pourrait modifier le programme pour recevoir et afficher ce qui arrive. Pour ma part j’ai choisi la solution de facilité et utilisé un terminal pour afficher le résultat : minicom
Comment faire ? J’ouvre 2 terminaux sur le Raspberry Pi 3.
- Dans l’un je lance minicom qui se met à l’écoute du port série et affiche tout ce qui arrive (en Hexa car j’ai ajouté -H sur la ligne de commande)
- Dans l’autre j’exécute le programme send_data.
Bienvenue avec minicom 2.7 OPTIONS: I18n Compilé le Apr 22 2017, 09:14:19. Port /dev/ttyAMA0, 10:57:22 Tapez CTRL-A Z pour voir l'aide concernant les touches spéciales 02 03 04 35 36 37 38 7f 7e 6a b5 c2 d4 e8 ff
Effectivement les données envoyées par le programme Python sont bien reçues par minicom. Il manque même le premier octet du fichier
Conclusion
Ne considérez pas cet article comme un tutoriel. Il nécessite l’installation et l’utilisation de plusieurs programmes qui ne sont pas documentés ici.
Il met en œuvre l’hexadécimal, le port série qui ne sont pas forcément familiers aux débutants.
Voyez y un simple guide destiné à servir d’aide mémoire pour ceux qui auront à réaliser ce genre d’opération.
Cet article Envoyer de l’hexadécimal sur le port série du Raspberry Pi a été publié en premier sur Framboise 314, le Raspberry Pi à la sauce française.....