L’Internet des Objets
24.2 Python
Le langage Python est pratique pour analyser les données en réponse à une interrogation.
Les scripts commencent par importer des librairies. Celles-ci peuvent être intégrées dans le système :
apt-cache search python serial ... python-serial - pyserial – module d’encapsulation d’accès à un port série ...
ou être installées par pip.
# apt install python-pip
L’utilisateur peut alors installer des paquets non intégrés dans sa distribution :
pip install bluepy
Il faut donc commencer par importer quelques librairies :
import serial import sys from PIL import Image import array
Puis ouvrir le port série émulé par le câble USB :
port="/dev/ttyACM1" dso=serial.Serial(port)
Il est alors possible d’envoyer des chaînes de caractères à l’oscillo et de lire en retour une ligne ou un nombre quelconque d’octets. Si on essaie de trop en lire, l’appel est bloquant.
dso.write('*IDN?\n')
idn = dso.readline()
header_len_block = dso.read(2)
Pour récupérer le graphe d’un signal, il faut :
-
1. Indiquer le mode d’acquisition (par exemple, le moyennage) :
dso.write(b':ACQUire:MODe 2\n') -
2. indiquer sur combien de mesures la moyenne est réalisée :
dso.write(b':ACQUire:AVERage 2\n') -
3. figer l’écran : dso.write(b':STOP\n')
-
4. Indiquer le canal à récupérer dso.write(b':ACQUire1:MEMory?\n')
Puis lire le résultat. Si cela se passe bien, l’oscillo renvoie :
-
1. Le caractère dièse :
diese = dso.read(1) -
2. Un charactère indique la longueur du champ indiquant combien d’octets vont être transmis :
lg= dso.read(1)
-
3. Lire la chaîne de caractères :
datal=dso.read(int(lg)) -
4. la longueur des données est vraisemblablement de 8008 :
-
(a) l’intervale de temps (période) est un flotant sur 4 octets MSB :
IT=dso.read(4) -
(b) le numéro du canal :
canal=dso.read(1) -
(c) 3 octets de bourrage :
inutile=dso.read(3) -
(d) Enfin les données représentées par un entier signé sur deux octets :
for i in range(int(data_length/2)-8): Y1=dso.read(2) V=struct.unpack('h',Y1) print(V)
-
Après un petit travail cosmétique, gnuplot affichera des courbes similaires à ce qu’on voit sur l’écran. La figure 24.5 montre un signal sinusoïdal sur l’écran de l’oscilloscope et sur l’écran de l’ordinateur.
Et la figure ?? présente la même chose pour un triangle.
dso.write(b':DISPLAY:GRAT 1\n') dso.write(b'channel2:display 0\n') dso.write(b'channel2:display 1\n') dso.write(b':DISPlay:OUTPut?\n')

