Lecture Balise détection OK
This commit is contained in:
parent
3b6856d406
commit
9c17953485
@ -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):
|
||||
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:]
|
||||
while 1:
|
||||
lecture_Detection(ser)
|
||||
sleep(0.001)
|
||||
|
||||
while(1):
|
||||
messages, data = lire_message(ser, data)
|
||||
for message in messages:
|
||||
print(message)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user