1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
import serial
import time
import json
ser = serial.Serial('COM3', 115200)
ser.timeout = 0.5 # valeur en secondes
ser.reset_input_buffer() # flushInput est dépréciée depuis PySerial 3.0
ser.reset_output_buffer() # idem pour flushOutput
etape = 0
while True:
try:
msg_recu = ser.readline().decode('utf8').rstrip().lower() # réception puis décodage puis retrait des '\r\n' (avec rstrip()) puis mise en minuscule)
except serial.SerialTimeoutException:
print("Erreur: Sortie par Timeout de lecture")
print(f"Pas de message reçu dans l'intervalle de temps indiqué ({ser.timeout}s)")
break
except serial.SerialException:
print("Erreur: Erreur d'E/S du port série")
break
else:
print((msg_recu))
if msg_recu.startswith("boutons"):
etape = 1
elif msg_recu.startswith("selecteur"):
etape = 10
elif msg_recu.startswith("joystick"):
etape = 20
elif msg_recu == '': # on passe ici si la chaine est vide (correspond à un changement de type de message)
etape = 0 # ça évite de le tester à chaque type de message
elif etape == 1:
# on passe ici si on a eu le message "boutons poussoirs" et que l'on a reçu le 1er message suivant
boutons = int(msg_recu)
dictionnaire ={"boutons": boutons}
with open("data.json", "w", encoding='utf-8') as l:
json.dump(dictionnaire, l)
with open("data.json", "r") as l:
dat = json.load(l)
# on traite la valeur reçue (qui peut être la 1ère ou la 2nde ou ...)
elif etape == 10:
# on passe ici si on a eu le message "sélecteur" et une des valeurs
selecteur = int(msg_recu)
dico ={"selecteur": selecteur }
with open("data.json", "w", encoding='utf-8') as p:
json.dump(dico, p)
with open("data.json", "r") as p:
donnee = json.load(p)
# on traite la valeur reçue
elif etape == 20:
# on passe ici si on a eu le message "joystick" et une des valeurs
joystick = float(msg_recu)
my_dictionnaire ={"joystick": joystick}
with open("data.json","w",encoding= 'utf-8') as f:
json.dump(my_dictionnaire,f)
with open("data.json","r") as f:
data_donnee = json.load(f)
ser.close() |
Partager