Quantcast
Channel: Framboise 314, le Raspberry Pi à la sauce française….
Viewing all articles
Browse latest Browse all 1015

Envoyer de l’hexadécimal sur le port série du Raspberry Pi

$
0
0

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 😛

Cliquer pour agrandir

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.....


Viewing all articles
Browse latest Browse all 1015

Trending Articles