Récupération de données RS232 par USB

Vous souhaitez piloter votre framboise à partir d'une page web ? Ou mieux encore à partir d'un smartphone ou d'une tablette Android ? Venez donc visiter cette rubrique...

Modérateur : Francois

Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

Re: Récupération de données RS232 par USB

Message par Le_Marius » ven. 29 avr. 2016 09:00

Bonjour,

Les 1ers tests effectués hier sur la machine sont catastrophiques ...
pour pouvoir lire ce que la machine envoie je suis obligé d'ouvrir GKTerm et de le paramétrer:
port: ttyUSB0 vitesse: 1200 bauds parité: paire (even)
nb bits : 7 bit de stop: 1

La seule sauvegarde " correcte " (forme correcte mais caractères inconnus) est celle qui doit être lancé depuis GKTerm.
Les scripts que j'ai fait bloquent le process.

Du coups, est-il possible de faire un script capable de définir les mêmes paramètres que GKterm ?

Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

Re: Récupération de données RS232 par USB

Message par Le_Marius » ven. 29 avr. 2016 10:27

Je viens de voir que "screen" me permet de m'afficher toutes les données venant de la machine sans soucis.

screen /dev/ttyUSB0 1200,cs7,ixon,ixoff,istrip

Est-il possible de sauvegarder dans un fichier texte ce que screen affiche ?

spourre
Raspinaute
Messages : 722
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Récupération de données RS232 par USB

Message par spourre » ven. 29 avr. 2016 11:31

Bonjour,

Peux-tu nous dire (ou donner un lien) quel capteur utilises-tu ?
Si des caractères s'affichent mais ne sont pas lisibles c'est soit que :
- le paramétrage du port série n'est pas le bon (nombre de bits...)
- le capteur envoie des caractères non imprimables (c'est pas du texte).

A 1200 bs, un simple cat du port USB suit sans problème.
Je viens de vérifier en branchant un vieux récepteur GPS (souris) qui envoie ses trames MNEA à 4800 bs, il n'y a aucun problème:

1) dmesg après branchement du périphérique:

Code : Tout sélectionner

[1463682.343185] usb 1-1.4: new full-speed USB device number 4 using ehci-pci
[1463682.436120] usb 1-1.4: New USB device found, idVendor=067b, idProduct=2303
[1463682.436133] usb 1-1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[1463683.624131] usbcore: registered new interface driver usbserial
[1463683.624151] usbcore: registered new interface driver usbserial_generic
[1463683.624168] usbserial: USB Serial support registered for generic
[1463683.637034] usbcore: registered new interface driver pl2303
[1463683.637056] usbserial: USB Serial support registered for pl2303
[1463683.637082] pl2303 1-1.4:1.0: pl2303 converter detected
[1463683.639774] usb 1-1.4: pl2303 converter now attached to ttyUSB0
je récupère le ttyUSB0 pour faire un simple cat (bien vérifier les droits sur le port):

Code : Tout sélectionner

sylvain@hpux:~$ cat /dev/ttyUSB0
$GPGGA,000623.976,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*79
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,000623.976,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*06
$GPGGA,000624.976,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0$GPGGA,001650.938,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*76
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,001650.938,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*09
$GPGGA,001651.938,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*77
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPGSV,1,1,01,25,00,000,00*4F
$GPRMC,001651.938,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*08
$GPGGA,001652.938,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*74
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
$GPRMC,001652.938,V,0000.0000,N,00000.0000,E,0.000000,,101102,,*0B
$GPGGA,001653.937,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*7A
Je te le redis, 1200 bs c'est une vitesse d'escargot qui ne doit poser aucun problème de lecture, même à un shell.

Nota:
1) pour répondre en partie à ton post suivant, oui il est possible de paramétrer le port série dans un shell. il faut utiliser la commande stty.
2) normalement, toute commande native ou installée après coup a une entrée dans le manuel en ligne qui rapelle sa fonction, des options et, sa syntaxe et donne des exemples. Tu peux tester :
man stty
et
man screen

Sylvain.

Le_Marius
Messages : 39
Enregistré le : jeu. 14 avr. 2016 15:37

Re: Récupération de données RS232 par USB

Message par Le_Marius » ven. 29 avr. 2016 12:56

La machine utilisé est un appareil ayant pour charge de consigner l'état de différents capteur.
Comme vous le dites, la vitesse de transmission ne pause aucun problème, mais lorsque j'utilise la commande cat sur le terminal , il y a réception de caractères spéciaux qui empêchent la bonne lecture .
Du coups quand je copie les données reçues dans un fichier texte, qui par la suite est lue dans l'IHM en tkinter cela pause problème. J'ai essayé de les supprimer ou de les remplacer mais ça ne fonctionne pas.

La meilleure solution que j'ai trouvé pour l'instant est de passer par screen.
il a l'avantage de pouvoir être lancé par un .sh, il est paramétrable pour le nombre de bit et la parité et son plus gros avantage c'est qu'il n'affiche pas les caractères posant problème.

J'ai donc essayé de recopier dans un fichier texte tout ce qui est affiché sur le screen mais mes tentatives ont pour l'instant toutes échoués ...

script -a -t 0 fichier.txt screen /dev/ttyUSB0 1200,cs7,ixon,ixoff,istrip

-a : ajouter le fichier de sortie
-t 0 : temps entre l'écriture de fichier de sortie est de 0 secondes, il est donc mis à jour pour chaque nouveau caractère
fichier.txt : fichier de destination
screen /dev/ttyUSB0 1200,cs7,ixon,ixoff,istrip: source de recopiage

s'il y a d'autres commandes offrant la possibilité de recopier dans un fichier tout ce qui est affiché par screen, je suis preneur :)

Répondre

Retourner vers « Des interfaces pour le Raspberry Pi »