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:

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é.")
Voila le genre d'affichage que j'obtiens:
Nom : bug_matplot.png
Affichages : 477
Taille : 85,7 Ko

quelqu'un peut t'il m'aider?