Accueil > > > DÉCODAGE GPS SUR PORT SERIE, VITESSE EN KM/H ET DISTANCE PARCOURUE
DÉCODAGE GPS SUR PORT SERIE, VITESSE EN KM/H ET DISTANCE PARCOURUE
Information sur la source
Description
Salut, voici un petit bou de code pour traiter les information venant d'un recepteur GPS sur le port serie. Moi personnelement j'utilise un GPS qui m'envoie les info par bluetooth. Le programme récupére simple les trames envoyé sur le RS232, et le plus dur est de les interprétaient. Dans un premier temps je récupére la position GPS en coupant la chaine de caractaire recu, puis je l'enregistre. Quand j'ai un deuxiéme point (donc 1 seconde aprés) je fait un méchant calcul pour trouver la distance parcourue (je ne tient pas compte de la hauteur), puis comme c'est sur une periode de 1 seconde je multipli par 3600 pour avoir la vitesse entre les deux point. En faite c pas une vitesse instantanée mais une vitesse moyenne sur 1 seconde!!! a vous de jugé!!! Ce soft marche pour les GPS avec les protocole NMEA-0183 (V3.01), GGA(1), GSA(3) Les données que vous devez recevoir sont de ce types : $GPGGA,071603.815,4704.9358,N,00221.5265,E,1,06,1. 9,184.7,M,,,,0000*01 Mais en gardant le même principe que moi vous pouvez l'adaptez a d'autre protocole GPS, le tous et de savoir où est quoi!!! PS: il y a souvent un petit décalage par rapport au compteur de voiture, donc vous pouvez multipliez par 1.1 environs pour avoir comme votre voiture.
Source
- Private Sub Timer1_Timer()
- Dim Latitude_degre As Double
- Dim Latitude_minute As Double
- Dim Emisphére_N_S As String
- Dim Longitude_degre As Double
- Dim Longitude_minute As Double
- Dim Emisphére_E_O As String
- Dim latitude1 As String
- Dim debut As Integer
- Dim l As Integer
- Dim dla As Double
- Dim dlg As Double
- Dim a As Double
-
- Temp = MSComm1.Input
- If (InStr(Temp, "$GPGGA") <> 0) Then
- Temp = Mid(Temp, InStr(Temp, "$GPGGA"), 50)' recupére les 50 caractére suivant "$GPGGA"
- Temp = Mid(Temp, 1, 50)
- Label22.Caption = Temp
- If (Len(Temp) >= 50) Then
- debut = InStr(10, Temp, ",") + 1 'cherche le debut des coordonnée GPS
- Latitude_degre = Mid(Temp, debut, 2)
- 'la variable l contient le nombre de chiffre qui représsente la latitude en minute(3 ou 4)
- l = InStr(debut + 2, Temp, ",") - InStr(debut + 2, Temp, ".") - 1
- Latitude_minute = Mid(Temp, debut + 2, 2) & "," & Mid(Temp, debut + 5, l)
- 'Emisphére_N_S = Mid(Temp, debut + 10, 1)
- Longitude_degre = Mid(Temp, debut + 12, 3)
- 'la variable l contient le nombre de chiffre qui représsente la longitude en minute(3 ou 4)
- l = InStr(debut + 15, Temp, ",") - InStr(debut + 15, Temp, ".") - 1
- Longitude_minute = Mid(Temp, debut + 15, 2) & "," & Mid(Temp, debut + 18, l)
- 'Emisphére_E_O = Mid(Temp, debut + 23, 1)
- If (i = False) Then
- i = True
- Latitude_1 = (Latitude_degre + Latitude_minute / 60) * 3.14159265358979 / 180
- Longitude_1 = (Longitude_degre + Longitude_minute / 60) * 3.14159265358979 / 180
- dla = Abs(Latitude_1 - Latitude_2)
- dlg = Abs(Longitude_1 - Longitude_2)
- a = Sin(dla / 2) * Sin(dla / 2) + Cos(Latitude_1) * Cos(Latitude_2) * Sin(dlg / 2) * Sin(dlg / 2)
- distance = 6375 * 2 * Atn(Sqr(a)) * 1.1
- Else
- i = False
- Latitude_2 = (Latitude_degre + Latitude_minute / 60) * 3.14159265358979 / 180
- Longitude_2 = (Longitude_degre + Longitude_minute / 60) * 3.14159265358979 / 180
- dla = Abs(Latitude_2 - Latitude_1)
- dlg = Abs(Longitude_2 - Longitude_1)
- a = Sin(dla / 2) * Sin(dla / 2) + Cos(Latitude_1) * Cos(Latitude_2) * Sin(dlg / 2) * Sin(dlg / 2)
- distance = 6375 * 2 * Atn(Sqr(a)) * 1.1 ' pour avoir comme les compteur de voiture
- End If
- distance_total = distance + distance_total
- Label3.Caption = distance_total
- Label1.Caption = distance * 3600
- compteur_km_2 Label1.Caption
- Temp = ""
- End If
- Else
- Temp = ""
- End If
- End Sub
Private Sub Timer1_Timer()
Dim Latitude_degre As Double
Dim Latitude_minute As Double
Dim Emisphére_N_S As String
Dim Longitude_degre As Double
Dim Longitude_minute As Double
Dim Emisphére_E_O As String
Dim latitude1 As String
Dim debut As Integer
Dim l As Integer
Dim dla As Double
Dim dlg As Double
Dim a As Double
Temp = MSComm1.Input
If (InStr(Temp, "$GPGGA") <> 0) Then
Temp = Mid(Temp, InStr(Temp, "$GPGGA"), 50)' recupére les 50 caractére suivant "$GPGGA"
Temp = Mid(Temp, 1, 50)
Label22.Caption = Temp
If (Len(Temp) >= 50) Then
debut = InStr(10, Temp, ",") + 1 'cherche le debut des coordonnée GPS
Latitude_degre = Mid(Temp, debut, 2)
'la variable l contient le nombre de chiffre qui représsente la latitude en minute(3 ou 4)
l = InStr(debut + 2, Temp, ",") - InStr(debut + 2, Temp, ".") - 1
Latitude_minute = Mid(Temp, debut + 2, 2) & "," & Mid(Temp, debut + 5, l)
'Emisphére_N_S = Mid(Temp, debut + 10, 1)
Longitude_degre = Mid(Temp, debut + 12, 3)
'la variable l contient le nombre de chiffre qui représsente la longitude en minute(3 ou 4)
l = InStr(debut + 15, Temp, ",") - InStr(debut + 15, Temp, ".") - 1
Longitude_minute = Mid(Temp, debut + 15, 2) & "," & Mid(Temp, debut + 18, l)
'Emisphére_E_O = Mid(Temp, debut + 23, 1)
If (i = False) Then
i = True
Latitude_1 = (Latitude_degre + Latitude_minute / 60) * 3.14159265358979 / 180
Longitude_1 = (Longitude_degre + Longitude_minute / 60) * 3.14159265358979 / 180
dla = Abs(Latitude_1 - Latitude_2)
dlg = Abs(Longitude_1 - Longitude_2)
a = Sin(dla / 2) * Sin(dla / 2) + Cos(Latitude_1) * Cos(Latitude_2) * Sin(dlg / 2) * Sin(dlg / 2)
distance = 6375 * 2 * Atn(Sqr(a)) * 1.1
Else
i = False
Latitude_2 = (Latitude_degre + Latitude_minute / 60) * 3.14159265358979 / 180
Longitude_2 = (Longitude_degre + Longitude_minute / 60) * 3.14159265358979 / 180
dla = Abs(Latitude_2 - Latitude_1)
dlg = Abs(Longitude_2 - Longitude_1)
a = Sin(dla / 2) * Sin(dla / 2) + Cos(Latitude_1) * Cos(Latitude_2) * Sin(dlg / 2) * Sin(dlg / 2)
distance = 6375 * 2 * Atn(Sqr(a)) * 1.1 ' pour avoir comme les compteur de voiture
End If
distance_total = distance + distance_total
Label3.Caption = distance_total
Label1.Caption = distance * 3600
compteur_km_2 Label1.Caption
Temp = ""
End If
Else
Temp = ""
End If
End Sub
Conclusion
Néssiter pas a me posser des question si je n'ai pas été clair.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
adaptateur qui converti le port usb du gps en com [ par nourhanan ]
salam je travaille sur une application qui necesitte d'enregistrer les coordonnées (latitude et longitude) relevé par le gps (de type garmin port usb)
probleme avec dropdownlist [ par loveislam ]
j'ai deux dropdownlistl"une charge tous les numero de commande et l'autre selon deux datesla deuxieme combo une fois charge les numero et je clic pour
Lancer un service à distance [ par Portos67 ]
Bonjour à tous,Voila j'ai un soucis pour démarrer un service à distance, en sachant que j'ai les droits admin sur les postes, j'arrive à connaître le
gps est ON ou OFF?? [ par nourhanan ]
salam comment je peux connaitre que mon gps connecté avec le port com est on ou off .Merci d'avance
traceur de courbe [ par plate29 ]
Bonjour, je souhaiterais savoir comment pourrais ton faire une courbe de vitesse avec vb6 et un tableau de point.Sachant que l'axe des abscisses serai
problem dans "insert" au base de donner [ par ouafa1 ]
Bonjour à tous je veux faire une requêt de "insert" mais un mesage d'erreur s'affiche lors de l'execution :(syntaxe incorrecte vers "," ) Svp aide m
Bug Affichage Pendant le Chargement de DATAGRIDView [ par ssefyou ]
bonjour ,j'ai un souci d'affichage pendant le chargement de ma datagridview http://www.monsterup.com/image.php?url=upload/1241438632129.jpg<a href
Comment se connecter a l'objet COM d'une page internet avec son handle [ par andrebernard ]
Bonjour à tousJe sais connecter l'objet COM d'une nouvelle instance d'internet explorer.Mais si par exemple, j'ouvre manuellement IE et que je desire
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
LISTER KEYS.KEYLISTER KEYS.KEY par Onin42
Cliquez pour lire la suite par Onin42
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|