Bonjour je rencontre un problème avec mon code qui permet d'afficher des coordonées gps (en principe), je ne comprends pas ou se trouve mon erreur, les points gps s'affichent mais de façon aléatoire.
Voici mon code:
Voila le genre d'affichage que j'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 matplotlib.pyplot as plt def parse_gps_data(gps_data): # Séparer les champs de la trame GPS en utilisant la virgule comme séparateur fields = gps_data.split(',') # Vérifier si la trame est GNGGA (données de position) if fields[0] == '$GNGGA': try: # Extraire la latitude et la longitude latitude = float(fields[2][:2]) + float(fields[2][2:]) / 60 longitude = float(fields[4][:3]) + float(fields[4][3:]) / 60 # Vérifier la direction de la latitude (N ou S) if fields[3] == 'S': latitude = -latitude # Vérifier la direction de la longitude (E ou W) if fields[5] == 'W': longitude = -longitude return latitude, longitude except Exception as e: print("Erreur lors de l'extraction des coordonnées:", e) return None # Définition du port série ser = serial.Serial('COM13', 115200) # Assurez-vous de changer le port selon votre configuration # Tracer les points GPS en temps réel plt.figure(figsize=(8, 6)) plt.xlabel('Longitude') plt.ylabel('Latitude') plt.title('Trajet GPS en temps réel') #plt.xlim(43.7,43.9) #plt.ylim(5.07,5.09) plt.grid(True) try: while True: # Lire une ligne de données depuis le port série gps_data = ser.readline().decode(errors='ignore').strip() # Ignorer les erreurs de décodage # Analyser les données GPS et afficher les coordonnées coordinates = parse_gps_data(gps_data) #coordinates = 43.86819841166667, 5.084892288333333 if coordinates: latitude, longitude = coordinates print (latitude,longitude) # Tracer le point GPS en temps réel plt.plot(longitude, latitude, '.', markersize=3) plt.draw() # Rafraîchir l'affichage plt.pause(0.01) # Pause pour rafraîchir l'affichage except KeyboardInterrupt: ser.close() print("Programme arrêté.")
quelqu'un peut t'il m'aider?
Partager