Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 19/10/2013, à 18:07

usky

Recuperer un flux d'info sur /dev/ttyUSB1

Bonjour

J'ai un préripherique USB qui récupere les données de mon compteur EDF.
La clé fonctionne, si je fais un 
J'obtient un texte qui défile. Ci joint un exemple :

DS-212j> cat /dev/ttyUSB1
PAPP 00900 *
HHPHC D /
MOTDETAT 000000 B
ADCO 040222095195 >
OPTARIF HC.. <
ISOUSC 45 ?
HCHC 034742837 ,
HCHP 043984767 C
PTEC HP..
IINST 004 [
IMAX 039 K
PAPP 00900 *
HHPHC D /
MOTDETAT 000000 B
ADCO 040222095195 >
OPTARIF HC.. <
ISOUSC 45 ?

Je souhaite pouvoir récuperer la valeur PAPP (consommation en Watt).

J'ai donc tenté un

cat /dev/USB1 | grep PAPP

Qui me renvoie bien les valeurs :

DS-212j> cat /dev/ttyUSB1 | grep PAPP
PAPP 00860 /
PAPP 00850 .
PAPP 00850 .
]

Mais là ou je bloque c'est pour récuperer uniquement la valeur numérique ?

Merci de votre aide


Un PC Desktop Sous Ubuntu 12.04 Unity + acer1410 sous Unity Plus de windows depuis 2007 Le PC acer est sous Windows7... Ubuntu ne marche plus correctement depuis la 12.04...
http://parrains.linux.free.fr/

Hors ligne

#2 Le 19/10/2013, à 22:38

ssdg

Re : Recuperer un flux d'info sur /dev/ttyUSB1

echo "PAPP 00860 /" | cut -d" "  -f2

Voilà. wink

Pour plus de détails, regarde le manuel de la commande cut wink


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#3 Le 20/10/2013, à 07:26

usky

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Merci ssdg
Ta commande fonctionne mais j'ai encore un soucis car ajouté à ma commande cela ne me sort rien...

cat /dev/ttyUSB1 | grep PAPP | cut -d" " -f2

une idée ?


Un PC Desktop Sous Ubuntu 12.04 Unity + acer1410 sous Unity Plus de windows depuis 2007 Le PC acer est sous Windows7... Ubuntu ne marche plus correctement depuis la 12.04...
http://parrains.linux.free.fr/

Hors ligne

#4 Le 20/10/2013, à 17:18

claudius01

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Bonsoir,

Peut-être que :

cat /dev/ttyUSB1 | grep PAPP | awk '{print $2}'

fonctionne mieux (si le cas pb de caractère espace, tabulation, etc.)


Cordialement, A+
--
Claudius

Hors ligne

#5 Le 21/10/2013, à 09:24

tiramiseb

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Salut,

Faire ce genre de choses sur un pseudo-fichier de périphérique me semble potentiellement problématique.
L'idéal serait de faire un petit programme qui se connecte sur le tty, avec gestion de flux, gestion d'erreurs, etc, et qui traite les données qu'il reçoit...

Ça m'étonne que ça passe par ttyUSB1 : c'est un convertisseur série/usb !?



Sinon, autre chose, ta clé USB m'intéresse, c'est quoi le modèle, ça s'achète où ?

Dernière modification par tiramiseb (Le 21/10/2013, à 09:24)


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#6 Le 21/10/2013, à 09:53

claudius01

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Bonjour,

tiramiseb a écrit :

... Ça m'étonne que ça passe par ttyUSB1 : c'est un convertisseur série/usb !?

Je dirai plutôt : Câble USB/Série ou package driver ftdi_sio de chez FTDI Chip installé dans les distributions Ubuntu > 08.04 qui permet, je cite un extrait d'article mettant en œuvre ce driver :

Linux (noyau version 2.6.31 et supérieur)
Les noyaux Linux de version supérieure ou égale à 2.6.31 intègrent les derniers pilotes
d’émulation de port virtuel du FT232R (modules ftdi_sio). Il n’y rien à installer et c’est aussi
probablement le cas pour des versions plus anciennes du noyau.
La passerelle est accessible via le périphérique /dev/ttyUSBx.
Pour émuler un terminal, nous vous recommandons GTKTerm ou HTerm.

et qui permet effectivement de faire des actions comme : echo « commandes » > /dev/ttyUSB1  ou  cat  fichier_de_commandes > /dev/ttyUSB1 et la réception plus l’affichage des réponses dans un 2ème terminal console par  cat < /dev/ttyUSB1 (cf. http://micro-infos.com/2013/01/17/progr … ronique/3/)


Cordialement, A+
--
Claudius

Hors ligne

#7 Le 21/10/2013, à 09:58

tiramiseb

Re : Recuperer un flux d'info sur /dev/ttyUSB1

claudius01 a écrit :

Je dirai plutôt : Câble USB/Série ou package driver ftdi_sio de chez FTDI Chip

Ce n'est de loin pas le seul périphérique/câble/adaptateur à faire un /dev/ttyUSBx...


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#8 Le 21/10/2013, à 13:18

claudius01

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Re,

Entièrement d'accord avec toi tiramiseb, mais cette solution est l'une des plus utilisées par les électroniciens depuis que leur chère interface série / RS232 a disparu de tous les PC ;-(
Maintenant, on ne va pas se priver d'un driver fourni de base dans Linux et qui est prêt à être installé; je veux parler du module 'ftdi_sio.ko' :

$ sudo find / -name "ftdi_sio.ko"
/lib/modules/3.5.0-30-generic/kernel/drivers/usb/serial/ftdi_sio.ko
/lib/modules/3.5.0-23-generic/kernel/drivers/usb/serial/ftdi_sio.ko 

Cordialement, A+
--
Claudius

Hors ligne

#9 Le 26/10/2014, à 13:55

usky

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Je ressucite ce topic car je n'ai toujours pas de solution...

Je souhaite maintenant l'executer sur un NAS synology.
Une solution (très peu présentable je l'admet) serait d'ecrire la sortie de ce port Serie/usb dans un fichier texte et de travailler ce fichier texte.

Pour faire cette opération, une solution manuelle que j'ai trouvé est de faire succéssivement :

cat /dev/ttyUSB0 > log.txt
sleep 2
pkill cat

Le probleme c'est que si je met tout dans un script, le script se bloque....


Un PC Desktop Sous Ubuntu 12.04 Unity + acer1410 sous Unity Plus de windows depuis 2007 Le PC acer est sous Windows7... Ubuntu ne marche plus correctement depuis la 12.04...
http://parrains.linux.free.fr/

Hors ligne

#10 Le 27/10/2014, à 08:57

ssdg

Re : Recuperer un flux d'info sur /dev/ttyUSB1

la syntaxe n'est pas exactement la même quand tu es dans un script(une question de quel processus à l'accès au clavier). Essaie avec cette syntaxe:

cat >monfichier <<EOF
test
test
EOF

Comme tu t'en doute, bash prend le contenu entre les deux EOF et le fourni à cat qui lui le répète, écrivant ainsi dans "monfichier"


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#11 Le 27/10/2014, à 09:06

tiramiseb

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Le probleme c'est que si je met tout dans un script, le script se bloque....

Il ne se bloque pas. Il reste sur le "cat" comme tu le lui as demandé.

Dans un script et dans un terminal, ton truc réagit de la même manière : avec ton "cat" tu ne peux plus entrer de commande après, il faut que tu l'arrêtes manuellement, soit avec Ctrl-C soit dans un autre terminal.

Donc contrairement à ce que dit ssdg, j'ai pour ma part envie de te dire que, justement, la syntaxe est exactement la même dans un script et dans un terminal : si tu fais ce "cat /dev/ttyUSB0 > log.txt" dans un terminal alors tu ne peux plus rien faire d'autre dans le terminal sans tuer ce cat.

Tu peux par exemple faire la chose suivante :

while read line
do
  [tes commandes machin truc]
done < /dev/ttyUSB0

Là ça lira le contenu de ton ttyUSB ligne après ligne, et pour chaque ligne ça exécute le contenu du while.

Mais bon, pour ce genre de choses il vaut mieux faire un "vrai" programme plutôt que de se baser sur un script.

D'ailleurs en cherchant un tout petit peu sur Google j'ai trouvé ce post d'un gars qui a fait un tel programme en C : http://hallard.me/teleinfo-broadcast/. Ça pourra peut-être te simplifier la vie...


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#12 Le 27/10/2014, à 09:17

usky

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Merci à tous les 2 pour vos réponses, je vais regarder ca.

J'utilisais le code en C pour faire cette opération mais la mise à jour du syno a tout cassé. DSM5 n'utilise plus mysql mais mariaDB et douc coup le programme en C ne fonctionne plus, il me manque une bibliotheque...
Je cherche donc une solution alternative sans compilation !

J'ai trouvé uin code php que je vais pouvoir adapter mais bizzarement il ne fonctionne pas sur le NAS.
Le code PHP ouvre le port /dev/ttyUSB0 via un fopen, mais bizarement rien n'est lu...

Mon idée est d'adapter le strict en récupérant un fichier log d'ou le cat.


Un PC Desktop Sous Ubuntu 12.04 Unity + acer1410 sous Unity Plus de windows depuis 2007 Le PC acer est sous Windows7... Ubuntu ne marche plus correctement depuis la 12.04...
http://parrains.linux.free.fr/

Hors ligne

#13 Le 27/10/2014, à 09:18

tiramiseb

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Ah d'accord, donc tu connaissais déjà ça.

Mon idée est d'adapter le strict en récupérant un fichier log d'ou le cat.

while, alors.

Ou alors un truc un peu plus évolué, avec Python par exemple.

Le code PHP ouvre le port /dev/ttyUSB0 via un fopen, mais bizarement rien n'est lu...

L'utilisateur qui exécute le code a les bons droits ?


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

#14 Le 27/10/2014, à 14:52

usky

Re : Recuperer un flux d'info sur /dev/ttyUSB1

tiramiseb a écrit :

Ah d'accord, donc tu connaissais déjà ça.

Ou alors un truc un peu plus évolué, avec Python par exemple.

J'y ai bien pensé mais je n'ai pas (encore) de compétences en python

L'utilisateur qui exécute le code a les bons droits ?

Bonne question, mais je n'en sais rien ...
Comment dire à PHP qu'il a le droit de lire ce port ?


Un PC Desktop Sous Ubuntu 12.04 Unity + acer1410 sous Unity Plus de windows depuis 2007 Le PC acer est sous Windows7... Ubuntu ne marche plus correctement depuis la 12.04...
http://parrains.linux.free.fr/

Hors ligne

#15 Le 27/10/2014, à 15:19

tiramiseb

Re : Recuperer un flux d'info sur /dev/ttyUSB1

Il faut voir avec quel utilisateur ce script PHP tournerait.


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

Hors ligne

Haut de page ↑