bertrand2310
Posts: 3
Joined: Sun Feb 11, 2018 2:19 pm

Obtention du nom d'un appareil sur le port série

Fri Feb 23, 2018 10:05 am

Bonjour,

Je suis actuellement occuper sur un projet qui consiste à faire des mesure d'un spectre lumineux à l'aide de spectromètre. Cependant, je dois en raccorder plusieurs à ma Raspberry et j'aimerai bien les faire fonctionner avec leur nom au lieu du port de connexion. Par exemple j'ai:
- SPECTRO1 sur ttyACM0
- SPECTRO2 sur ttyACM1
- ...
Comme ils ne peuvent pas tous faire la même chose et qu'il est facile d'inverser les raccords, je me demandais s'il n'était donc pas possible d'identifier un appareil par son nom via le programme python.

PS: Je suis en python 2 car j'ai une bibliothèque qui n'est pas disponible pour le 3.

Merci d'avance

Kevin

nikotinux
Posts: 670
Joined: Sat Feb 02, 2013 2:11 am

Re: Obtention du nom d'un appareil sur le port série

Fri Feb 23, 2018 11:33 am

une liaison série, c'est vitesse et format de données ! point ! pas de protocole d’échange de données !

si on ne sais pas ce qui est raccordé derrière on ne peut pas le deviner ...
ça peut être un modem, une imprimante, un terminal .
c'est cet équipement qui imposera le protocole d’échange et il faut se référer a sa doc pour en connaître les possibilités.

tes spectromètres ont peut être la fonctionnalité que tu désires, si tu as un lien vers la doc sur un site on peut t'aider a chercher.

danjperron
Posts: 3096
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: Obtention du nom d'un appareil sur le port série

Fri Feb 23, 2018 11:53 pm

Quelques périphériques série USB ont un numéro de série.


Il s'agit donc de faire un script pour lire le numéro de série et ensuite utiliser un "link" pour la sélection.
Je suppose que ce sera le même adapteur USB pour le même spectromètre..

Code: Select all

[email protected]:~ $ udevadm info --name=/dev/ttyACM0 | grep SERIAL_SHORT
E: ID_SERIAL_SHORT=74934303030351E0E072
[email protected]:~ $ udevadm info --name=/dev/ttyUSB0 | grep SERIAL_SHORT
E: ID_SERIAL_SHORT=A6027W50
[email protected]:~ $ 

danjperron
Posts: 3096
Joined: Thu Dec 27, 2012 4:05 am
Location: Québec, Canada

Re: Obtention du nom d'un appareil sur le port série

Sat Feb 24, 2018 4:17 am

Voici un exemple de script que tu ajoutes dans /etc/rc.local

juste avant le exit 0!

/home/pi/linkSpectro.sh

Il faut toutefois executer ce script en mode sudo si tu branches le dongle USB série après coup.

Trouve les numéro de série des dongle série USB et change spectro1 et spectro2. De cette façon /dev/spectro1 sera toujours le dongle avec le numéro de série spectro1 et c'est de même pour spectro2

linkSpectro.sh

Code: Select all

#!/bin/bash

spectro1="74934303030351E0E072"
spectro2="9900000041504e45004640050000004d0000000097969901"


ttyACM0="$(/bin/udevadm info --name=/dev/ttyACM0 | grep SERIAL_SHORT | cut -d '=' -f 2)"
ttyACM1="$(/bin/udevadm info --name=/dev/ttyACM1 | grep SERIAL_SHORT | cut -d '=' -f 2)"


if  [ $spectro1 == $ttyACM0 ]
then
     /bin/ln -s /dev/ttyACM0 /dev/spectro1
fi

if  [ $spectro2 == $ttyACM0 ]
  then
     /bin/ln -s /dev/ttyACM0 /dev/spectro2
fi

if  [ $spectro1 == $ttyACM1 ]
  then
     /bin/ln -s /dev/ttyACM1 /dev/spectro1
fi

if  [ $spectro2 == $ttyACM1 ]
  then
     /bin/ln -s /dev/ttyACM1 /dev/spectro2
fi
Maintenant les spectromètres devront ce brancher sur /dev/spectro1 et /dev/spectro2.

Return to “Français”