Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1166 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Réception donnée hexadécimale sur port serie avec Bash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Réception donnée hexadécimale sur port serie avec Bash

n°1315661
Twister
Posté le 06-07-2012 à 23:17:41  profilanswer
 

Bonjour à tous,
 
J'ai quelques petits soucis avec la réception des données sur un port série.
 
Alors je cherche à piloter du matériel via le port RS232 (une régie panasonix AG-HMX100).
 
La connection se fait via un adaptateur USB -> Série (/dev/ttyUSB0).
 
Les commandes sont du type STX Commande:parametre ETX un petit exemple : 0x02VDK:33010x03
 
donc en bash j'envoie la commande comme ca et ca marche : echo -ne "\\x02VDK:3301\\x03" > /dev/ttyUSB0 (apres avoir rajouté mon utilisateur au groupe dialout).
Le matériel réagit correctement donc la commande est bonne.
 
En retour la régie est censé renvoyer un ACK ou NAK.
 
avec cutecom (terminal serie graphique) je vois parfaitement ce retour mais je n'arrive pas à le faire en bash.
 
cat /dev/ttyUSB0, meme chose pour dd et tail.
 
Quelqu'un peut-il m'aider?
 
Merci d'avance

mood
Publicité
Posté le 06-07-2012 à 23:17:41  profilanswer
 

n°1315670
bardiel
Debian powa !
Posté le 07-07-2012 à 10:58:40  profilanswer
 

Problème "connu", il faut que ton noyau est été compilé avec les options nécessaires pour pouvoir lire directement depuis le port série virtuel (ce qui, tu remarqueras, est très pratique pour de l'adaptateur USB-série [:the geddons] )
Plutôt que de recompiler, initialise ta sortie ttyUSB0 avec stty pour pouvoir le faire (directement copié depuis un script pour Arduino)

Citation :

stty -F /dev/ttyUSB0 cs8 ispeed 38400 ospeed 38400  ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts


Regardes la page du manuel pour les options de stty :jap:  
Pour ton script au complet, inspires toi de ça :D


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1315679
Twister
Posté le 07-07-2012 à 13:42:18  profilanswer
 

Merci pour ta réponse.
 
J'ai obtenu un résultat très mineur avec la méthode suivante.
 
j'ai de temps à autre un saut de ligne, mais cela ne se produit pas à chaque commande envoyée.
 

Code :
  1. #!/bin/bash
  2. stty -F /dev/ttyUSB0 9600 cs8 -parenb -parodd -cstopb -ixon cread clocal -crtscts -icanon // config du matériel a piloter : 8 bit de donnée, pas de parité, 1 bit de stop, pas de controle de flux
  3. while true
  4. do
  5.    inputline=""
  6.    inputline=$(head -c 1 < /dev/ttyUSB0)
  7.    echo "$inputline"
  8. done


 
Somebody help?


Message édité par Twister le 07-07-2012 à 13:42:33
n°1315680
Twister
Posté le 07-07-2012 à 14:06:52  profilanswer
 

J'avance doucement!!!
 
avec la commande suivante je reçois des 06 (ACK) et des 15 (NAK) mais de manière étrange pas à chaque commande......
 

Code :
  1. od -x < /dev/ttyUSB0


 
Peut-etre est ce un probleme de synchronisation avec la reception des donnée?
 
De plus les données ne sont affiché que lorsqu'une ligne est rempli. Est-il possible de voir les données en direct?
 
Merci d'avance


Message édité par Twister le 07-07-2012 à 14:22:42
n°1315693
bardiel
Debian powa !
Posté le 07-07-2012 à 22:45:39  profilanswer
 

En lançant ton script d'un côté, et dans un terminal avoir un  

Citation :

tail -f monfichier.ext |xargs -IX printf "$(date -u)\t%s\n" X


En mettant en sortie des commandes une redirection vers monfichier.ext ? (c'est vraiment pas propre :o )
 
Quand à stty, j'ajouterais -iexten -echok [:spamatounet]


---------------
Grippe ? Coronavirus ? Portez votre masque correctement ! :D
n°1316053
Twister
Posté le 13-07-2012 à 15:50:21  profilanswer
 

Bon alors ca marche avec un CAT finalement j'ai juste redémarrer le server....


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Réception donnée hexadécimale sur port serie avec Bash

 

Sujets relatifs
Script Bash pour récuperer seulement l'adresse IP(résolu) test sur un entier en bash (très simple)
Tableau contenant des variables - Script bashProbleme port 80 appache
[BASH] Problème de traitement sur boucle FOR[résolu][BASH]commande for foireuse ?
Aide en bashReception de notification nagios
bash : extraire 1 chaine[passwd] - affecter directement un passwd à la création d'un user [RES
Plus de sujets relatifs à : Réception donnée hexadécimale sur port serie avec Bash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR