From 9c1795348579235fdd71fc09cd79b1356a14f47d Mon Sep 17 00:00:00 2001 From: Samuel Date: Wed, 22 Apr 2026 21:20:49 +0200 Subject: [PATCH] =?UTF-8?q?Lecture=20Balise=20d=C3=A9tection=20OK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LectureReception.py | 64 +++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/LectureReception.py b/LectureReception.py index 892d5e2..a111217 100644 --- a/LectureReception.py +++ b/LectureReception.py @@ -1,50 +1,56 @@ import struct import serial +from time import sleep +from time import time + 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 lecture_Detection(ser): + ser.write(b'\xFF\xFF\x05dP\x00\x0C\x00') + messages, tmp = lire_message(ser, b'') + for message in messages: + print("{:.3f} {}".format(time(), message[1])) def check_message(message, offset): - offset = offset + 2 # on saut '\xFF\xFF' + offset = offset + 3 # on saut '\xFF\xFF + id' 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 +def lire_message(ser, old_data): + data = old_data + nb_read = ser.in_waiting + offset = 0 + valid_offset = 0 + messages = [] + if nb_read > 0: + data += ser.read(nb_read) + while offset > -1: + offset = data.find(b'\xFF\xFF', offset) + if(offset > -1): + message = check_message(data, offset) + if message is not None: + messages.append(message) + valid_offset = offset + offset = offset + 1 + data = data[valid_offset:] + return messages, data if __name__ == "__main__": data = b'' + while 1: + lecture_Detection(ser) + sleep(0.001) + 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:] + messages, data = lire_message(ser, data) + for message in messages: + print(message) + \ No newline at end of file