CerveauPy2026/LectureReception.py
2026-04-22 18:11:26 +02:00

50 lines
1.7 KiB
Python

import struct
import serial
ser = serial.Serial('/dev/ttyACM0' , 115200)
def lecture_Detection():
ser.write(b'\xFF\xFF\x05dP\x80\x21\x00')
nb_read = ser.in_waiting
data = ser.read(nb_read)
# print("nb_read={}".format(nb_read))
list_message = data.split(b"\xff\xffP")
# print("nb_read={}, list_message={}".format(nb_read, len(list_message)))
if len(list_message)>1:
if len(list_message[1])>33:
struct_value = struct.unpack('ffffffffB',list_message[1][1:34])
return (struct_value[0],struct_value[1],struct_value[2], struct_value[3], struct_value[4], struct_value[5], struct_value[6], struct_value[7], struct_value[8])
def check_message(message, offset):
offset = offset + 2 # on saut '\xFF\xFF'
if(len(message) > 0 + offset):
taille_message = message[0+offset]
print("taille_message + " + str(taille_message))
if(len(message) > taille_message + offset):
if(message[taille_message+offset] == 0):
print("message valide")
return message[0+offset:taille_message+offset]
return None
if __name__ == "__main__":
data = b''
while(1):
nb_read = ser.in_waiting
offset = 0
valid_offset = 0
if nb_read > 0:
data+= ser.read(nb_read)
while offset > -1:
offset = data.find(b'\xFF\xFF', offset)
if(offset > -1):
message_brut = data[offset:]
message = check_message(data, offset)
if message is not None:
print(message)
valid_offset = offset
offset = offset + 1
data = data[valid_offset:]