Aide Serial sur python

Bonjour à tous! J’ai une balance connectée via le serial port sur mon raspberry pi. Je ne m’y connais pas beaucoup là dedans, je commence. Lorsque je lis le signal via le Pi, j’ai cela comme output: b’\x02 3003 \r’. La lecture que je voudrais avoir est seulement le 3003. J’ai fouillé un peu et il semble que ce serait parce que c’est en ASCII? Comment faire pour avoir seulement le 3003 comme chiffre, car je voudrais le transformer en Int par la suite. Voici mon code. Merci!

import time
import serial
import datetime

ser = serial.Serial(
port=‹ /dev/ttyAMA0 ›,
baudrate = 9600,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.SEVENBITS,
timeout= 1
)
poids1 = ser.readline(8)
print (poids1)

Bonjour,
Il faut effectivement décoder la lecture en ascii.

poids1 = ser.readline(8)
p=poids1.decode('ascii').rstrip()

A+

Bonjour Jelopo! Merci pour ta réponse, ca semble fonctionner. Sais-tu comment faire pour transformer cela en integer? J’ai essayé d’ajouter
Poids2= int(poids1)
Print (poids2)

Mais j’ai l’erreur "value error: invalid literal for int() with base 10: ´\x02 3003’'. Merci!

Bonjour,

Dans l’erreur il reste 2 champs « \x02 » et « 3003 », il faut extraire que la seconde valeur
Je propose de découper chaque valeur de la lecture dans un liste puis de lire la seconde valeur.
Essayer comme ceci:

poids1 = ser.readline(8)
p=poids1.decode('ascii').rstrip().split()
poids2=int(poids1[1])

A+

C’est exactement ce que je voulais! Merci beaucoup pour ton aide. :slight_smile: