DÉCODAGE GPS SUR PORT SERIE, VITESSE EN KM/H ET DISTANCE PARCOURUE

cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006 - 11 août 2005 à 20:12
imas1988 Messages postés 4 Date d'inscription samedi 26 mars 2011 Statut Membre Dernière intervention 17 août 2011 - 5 août 2011 à 11:35
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33197-decodage-gps-sur-port-serie-vitesse-en-km-h-et-distance-parcourue

imas1988 Messages postés 4 Date d'inscription samedi 26 mars 2011 Statut Membre Dernière intervention 17 août 2011
5 août 2011 à 11:35
Salamou Alaikom, bonjour à tous,
je veux récupérer des informations de mon périphérique GPS distant qui envoie les données par des messages GPRS ou GSM n utilisant les commandes AT, quelquns peut m'aider SVP. Merci
chahinem Messages postés 1 Date d'inscription samedi 10 janvier 2009 Statut Membre Dernière intervention 15 mars 2010
15 mars 2010 à 09:34
bonjour à tous,
je suis entrain de faire mon PFE avec le "module GPS ET312" je vais le cummuniquer avec une carte a base de microcontroleur avec la liaison RS232(norme NMEA)".
-->pour le moment je suis entrain de familiariser avec le programme MBasic pour programmer le PIC 16F876..., et la shui bloqué pouvez vous m'orienter?
-->pour le ET312 je veut savoir comment modifier ses parametres
--> finalement lorsque j l'ai connecté a mon PC il marche sans arret(il donne des trammes successive de type GGA GLL GSA RMC....) là je veut qu'il me donne les information que lorsque je le demande.

merci
panterga Messages postés 67 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 5 février 2012 1
24 juil. 2008 à 17:38
Bonjour Messieurs

je recherche la procedure pour (suite à relevé gps sur $GPRMC) calculer et comparer un point geographique .
Je m'explique : imaginons que je localise la latitude et longitude d'un endroit , je voudrais avoir une detection sur le pda-gps quand je m'approche de ce relevé (evidemment je ne pense pas que l'on puisse comparer au millimetres!) ex : une voiture passant à proximité du relevé pourrait le signaler (plusieurs metres de décalage merci de votre réponse )
cs_sissyah Messages postés 1 Date d'inscription mercredi 28 février 2007 Statut Membre Dernière intervention 3 avril 2007
3 avril 2007 à 11:38
salut a tous, mon pb a moi est de recevoir les données GPS via le GPRS de l'opérateur de télécom sur mon serveur;je nai aucune idée la dessus,please de l'aide!!
jcdarcheville45460 Messages postés 1 Date d'inscription vendredi 9 mars 2007 Statut Membre Dernière intervention 9 mars 2007
9 mars 2007 à 23:58
Wahou, je suis plutot noob en codage (étudiant plutot restreind au C dans mon cas) et je me demandais si cette applet pouvais etre codé en C affin de tourner sur un RTOS (qui peut lancer plusieurs taches en C bien sur) donc comment récupérer des variables telles que la vitesse , la latitude et longitude dans des variables globales ... ?
Donc En C, comment obtenir le meme resultat ?
bil_hack Messages postés 9 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 13 août 2009
24 janv. 2007 à 01:38
salut,
j'ai regardé vos commentaires a tous... je trouve ça génial
mais en fait mon probléme à moi est exactement le contraire.je m'explique en fait je developpe une appli sur ppc et je veux ecrire du texte dans le port serie du pocket pc (toutes les secondes) a partir d'un fichier texte.
j'arrive à lire mon fichier texte mais au moment de l'écriture, ça me catch une erreur IOexception.
si vous pouvez m'aidez!!!!
merci d'avance
utilsea Messages postés 2 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 20 mars 2006
20 mars 2006 à 21:48
En ce qui concerne la vitesse, il suffit de recupérer l'info qui se trouve dans la trame VTG (beaucoup plus précise que la dérivé du point..., car sur les bons GPS calculée par un doppler sur les sats.
Juste avant le K c'est la vitesse en Kmh et le N en noeuds (1852m par heure).
Pour ce qui est des cartes de région il faut se palucher une transformation de coordonées (WGS84 vers projection locale) car la plupart des cartes sont en systèmes local (pour la Réunion good luck cela doit être un des systèmes les plus pourri que je connaisse).
Et pour la verification des trames, la valeur qui se trouve en hexa après l'étoile en fin de trame est le checksum qui se calcul faisant un ou exclusif de tous les chars entre $(exclu) et *(exclu).
A+
MINDNET Messages postés 12 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 1 avril 2007
15 janv. 2006 à 04:41
En faite , j'ai déja la carte de ma region (ile de la reunion) en format 2800x2400 fait par ign.
C'est pour de la randonnée (je veux faire la meme chose pour le maroc ...).
Depuis un mois j'ai pas trouver un bout de soft qui gere lat & long dans un picturebox avec scroll .Que des ocx ou dll payant !!!
Merci !
cs_pit1 Messages postés 32 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 17 janvier 2007
14 janv. 2006 à 18:58
Bouv: fais attention pour le PPC, il y a que .net Compact Framework (.netcf) qui est quand même assez limité (j'ai programmé avec, pas mal de fonctions manquent).

MindNet: pour la carte, c'est assez facile avec www.mapquest.com:

D'abord il faut connaitre l'url de la page web, qui contiendra un lien vers le gif de la carte:

' initilize variables
MapURL = "http://www.mapquest.com/maps/map.adp?size=big&latlongtype=decimal&latitude=%LATDECDEG%&longitude=%LONGDECDEG%&zoom=%ZOOM%"

url = MapURL
url = Replace(url, "%LATDECDEG%", Replace(Format$(lat, "#0.000000"), ",", "."))
url = Replace(url, "%LONGDECDEG%", Replace(Format$(lon, "#0.000000"), ",", "."))
url = Replace(url, "%ZOOM%", CStr(Zoom))

Ensuite reste à extraire le link vers le gif et de le télécharger:

GifURL = "e=9&GetMapDirect="
url = html
' strip after the first occurence of " after 'e=9&GetMapDirect'
url = Left$(url, InStr(InStr(url, GifURL), url, Chr$(34)) - 1)
' strip before the last occurence of " before 'e=9&GetMapDirect'
url = Mid$(url, InStrRev(url, Chr$(34)) + 1)
MINDNET Messages postés 12 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 1 avril 2007
14 janv. 2006 à 16:45
Salut !

Es tu arrivé a situer tes coordonnées sur une picturebox integrant la carte de ta region ?

@+++
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
19 déc. 2005 à 22:04
PIT1>>Merci pour l'info, en fait pour le V c'est du au fait que je programme au fond de mon bounker (appart). Sinon j'ai cherché un peu sur le net et j'ai trouvé pas mal d'infos. En fait chaque ligne renvoi des infos complémentaires. Il y en a une par exemple qui renvoi la vitesse directement en Km/H. Si j'ai le temps je posterai un petit module.

PS : EL_TEEDEE. Je me suis mis au .NET donc je pense pouvoir porter le code sur PPC.
Donc si je post un code ce sera en .NET

++
cs_pit1 Messages postés 32 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 17 janvier 2007
19 déc. 2005 à 20:26
Salut Bouv,

en fait il faut filter sur les lignes GPRMC, mais ton GPS n'a pas encore assez de satellites pour détermineer la position exacte "V", lorque le fix est bon, il renvoie un "A". Probablement la vue sur le ciel n'est pas bonne ou il n'a pas encore eu assez de temps ...

Salut Kev,

suffit de mapper le port USB sur un port COM et cela marche (normalement il y a un petit utilitaire Portset.exe ou semblable sur le CD-Rom de ton GPS/Adapteur)
kev900001 Messages postés 119 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 9 avril 2008
19 déc. 2005 à 12:06
salut je voudrai bien tester ton prog
car je suis super interesse mais y at il moyen de le faire marcher pour une sonde gps usb
merci
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
16 nov. 2005 à 10:46
Salut, j'ai un petit problème. Mon GPS me renvoi l'info suivante sur MSComm1.Input :

$GPGGA,093446.585,,,,,0,00,,,M,,,,0000*31
$GPGLL,,,,,093446.585,V,N*7E
$GPGSA,A,1,,,,*32
$GPGSV,3,1,10,09,80,077,27,05,57,241,11,07,31,055,,30,25,239,*77
$GPGSV,3,2,10,22,21,276,11,14,20,317,21,26,17,160,,18,13,238,*7F
$GPGSV,3,3,10,29,07,158,,24,05,053,*7D
$GPRMC,093446.585,V,,,,,,,161105,,,N*4B
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,093447.585,,,,,0,00,,,M,,,,0000*30
$GPGLL,,,,,093447.585,V,N*7F
$GPRMC,093447.585,V,,,,,,,161105,,,N*4A
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,093448.585,,,,,0,00,,,M,,,,0000*3F
$GPGLL,,,,,093448.585,V,N*70
$GPRMC,093448.585,V,,,,,,,161105,,,N*45
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,093449.585,,,,,0,00,,,M,,,,0000*3E
$GPGLL,,,,,093449.585,V,N*71
$GPRMC,093449.585,V,,,,,,,161105,,,N*44
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,093450.585,,,,,0,00,,,M,,,,0000*36
$GPGLL,,,,,093450.585,V,N*79
$GPGSA,A,1,,,,*32
$GPGSV,3,1,10,09,80,077,27,05,57,241,12,07,31,055,,30,25,239,*74
$GPGSV,3,2,10,22,21,276,13,14,20,317,20,26,17,160,,18,13,238,*7C
$GPGSV,3,3,10,29,07,158,,24,05,053,*7D
$GPRMC,093450.585,V,,,,,,,161105,,,N*4C
$GPVTG,,T,,M,,N,,K,N*2C

Et ni le code de pompier0112 ni celui de PIT1 ne fonctionnent. Quelqu'un peut-il m'aider.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
13 sept. 2005 à 19:30
Ok, moi je ne connais que le VB (v6)... mais si tu trouve le temps fait moi signe, cela m'interresse.
En fait je pars souvent faire du Snowboard avec mes freres et des potes et on s'est toujours demandé à quelle vitesse on pouvait bien descendre...

Bonne prog
++
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
13 sept. 2005 à 09:48
Oki, c cool,
j'essaierais de m'y atteler dès que j'aurais un peu plus de temps...

>Bouv : je développe sur pocket pc pas depuis longtemps, et j'en suis a mon premier programme, donc tu sais....
Mais il n'y a vraiment pas grand chose qui diffère entre C# pour windows et C# pour Windows CE. Quelques composants en moins car le Compact Framework est plus léger, et quelques fonctions dont les paramètres ont été modifiés (ex : .GetString(...) ), mais sinon c pareil...

Voilou
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
12 sept. 2005 à 23:12
Slt EL_TEEDEE, effectivement cela fait lgtp. Ca va très bien merci.
Tu programme pour les Pocket PC ! Interressant ! Saurais-tu passer ce code pour Windows Mobile ?

A la revoyure.

Bonne prog
++
pompier0112 Messages postés 9 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 12 septembre 2005
12 sept. 2005 à 17:58
il n'y a aucun pb, tu peut le passé en C#!
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
12 sept. 2005 à 15:54
Bon, en fait, tu sais quoi ?

vu que je suis sous Visual Studio DotNET, ton composant mscomm n'est pas connu (je crois que j'avais déjà vu ce pb qql part)
donc, si tu m'autorise, et surtout lorsque j'aurais le temps, j'aimerais bien passer ta source avec la gestion d'un port série (pour GPS et GPS Bluetooth) en C#.

Qu'en penses tu ?
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
12 sept. 2005 à 15:45
Salut tout le monde,
et salut Bouv, y'avait longtemps, tu vas bien depuis le dernier coup ? :-)

Bon, je m'en vais vite télécharger ce petit code et essayer de le tester.

>Bouv : si tu t'intéresses au SPP (ou service port série) j'ai de l'info à te passer la dessus. En effet, je suis en stage de 3ème année de cycle ingénieur, et la je bosse sur une appli sur pocket pc en Bluetooth, et j'ai utilisé le SPP pour la communication Bluetooth.
ma source sur le bluetooth en SPP : http://www.csharpfr.com/code.aspx?ID=33082

Si vous voulez la tester au passage, j'en serais ravi pour avoir des commentaires constructifs ;)

Aller je m'en vais tester le soft de notre ami Pompier0112

el_teedee
jjbailet Messages postés 3 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 22 août 2005
22 août 2005 à 12:07
Merci d'avoir répondu aussi vite.
Je ne connais pas le protocole de transmission de données d'un port CompactFlash sur PC et je n'ai pas de driver vendu pour PC car au départ le GPS était prévu pour un Pocket-PC.
Les références de mon GPS CompactFlash sont :
marque : AVESTA
modèle : HI-302CF
Input : 3,3V continu, 90 mA
pompier0112 Messages postés 9 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 12 septembre 2005
21 août 2005 à 14:42
Essai peut etre de te reporter a la notice ou bien au driver correspondant a ton GPS. Il y a peut etre un émulateur de port serie pour ce type de GPS???
Donne la référence du GPS ca peut aider.
++
jjbailet Messages postés 3 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 22 août 2005
21 août 2005 à 12:55
Bonjour à tous,
Le code pour le GPS m'intêresse mais mon GPS est connecté sur un port type carte CompactFlash et je ne sais pas comment récupérer les données à partir de ce port.
Quelqu'un pourrait m'aider ???
Merci
et @+ jjbailet
cs_oynis Messages postés 3 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 15 août 2005
15 août 2005 à 19:31
Bonjour a tous,

J'ai lu attentivement vos codes, tous interressant mais apparement vous n'avez pas de routine reconstituant la trame au cas ou le transfert depuis le port serie ne soit pas complet. Il m'arrive de ne pas avoir la fin d'une trame. J'utilise un recepteur gps bluetooth TomTom. Je ne sais si c'est la raison. A votre avis ?

Bon codage et @ + !
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
14 août 2005 à 21:31
Ok merci pour l'info..
++
pompier0112 Messages postés 9 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 12 septembre 2005
14 août 2005 à 12:56
En faite lorsque je j'allume mon GPS bluetooth, il y a un icon d'ordinateur qui apparai dans la fenetre "favoris bluetooth" et quand tu fait un clic droit dessus il te propose de la connecter en "SPP" qui corespond a creer un port serie virtuel. LA signification de SPP est : Sérial Port Profile, mais en tous cas ca marche.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
13 août 2005 à 13:42
Ouai ça a l'air super.
Serait-il possible d'avoir un zip ?
Pompier0112>>Pourais-tu me dire ce que signifie connecter en SPP ?
pompier0112 Messages postés 9 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 12 septembre 2005
12 août 2005 à 21:04
Merci bien pour le petit truc , je vai essai ca le plus rapidement possible MERCI en core :-)))
cs_pit1 Messages postés 32 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 17 janvier 2007
12 août 2005 à 20:57
Désolé, la dernière sub "Utc2Local" n'est pas nécessaire, j'en ai besoin pour autre chose ...
cs_pit1 Messages postés 32 Date d'inscription dimanche 15 juin 2003 Statut Membre Dernière intervention 17 janvier 2007
12 août 2005 à 20:54
Il y a plus simple pour décoder le string NMEA, utilise donc la fonction SPLIT!

En fait la vitesse est dans le string NMEA, pas besoin de calculer ( il faut tout de même la convertir de mph vers kmh)...

Il a encore 2 choses à vérifier:
- le fix actuel du GPS doit être valide (paramètre A dans le string)
- le checksum doit être correct.

La procédure ci-dessous le fait.

Dans mon application j'utilise le structure suivante (cela permet aisément des calculs plus poussés, car les valeurs sont déja converties vers le bon type):


Public Type GPSdata
DeviceStatus As String
DateTimeUTC As Date
DateTimeLocal As Date
ReceiverWarning As Boolean
Latitude As Double
LatitudeDir As String
LatDecDeg As Double
Longitude As Double
LongitudeDir As String
LongDecDeg As Double
SpeedKMH As Double
Course As Double
MagneticDeclination As Double
Checksum As Boolean
End Type

Pour la conversion de la date et de l'heure, il faut encore savoir dans quelle timezone se trouve le PC local, il faut donc définir l'api et les structures suivantes:

Private Declare Function GetTimeZoneInformation Lib "kernel32" _
(lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Private Type TIME_ZONE_INFORMATION
Bias As Long
StandardName As String * 64
StandardDate As SYSTEMTIME
StandardBias As Long
DaylightName As String * 64
DaylightDate As SYSTEMTIME
DaylightBias As Long
End Type

La sub suivante décode le string:

Public Function decodeRMC(ByVal RMCstring As String) As GPSdata

'The RMC-Datasentence (RMC=recommended minimum sentence C)
'is a recommendation for the minimum, that a GPS-Receiver should give back.
'It looks like this: "$GPRMC,191410,A,4735.5634,N,00739.3538,E,0.0,0.0,181102,0.4,E,A*19"

Dim ChkDat As String
Dim ChkSum As String
Dim dat() As String
Dim i As Integer, s As Integer
Dim TZI As TIME_ZONE_INFORMATION
Dim nZoneCorrection As Long
Dim ret As Long
Dim l As Long

On Error Resume Next

' strip everything before the $ and convert to uppercase
i = InStr(RMCstring, "$")
decodeRMC.DeviceStatus = Trim$(Left$(RMCstring, i - 1))
If i = 0 Then
decodeRMC.Checksum = False
Exit Function
End If
RMCstring = Mid$(RMCstring, i - 1)
RMCstring = UCase$(Trim$(RMCstring))

Debug.Print RMCstring

'Checking initstring. Must be the same for all RMC sentences.
If Left$(RMCstring, 1) <> "$" Or _
Mid$(RMCstring, 4, 3) <> "RMC" Then
decodeRMC.Checksum = False
Exit Function
End If

' ----------------------------------------
' check if string is valid (checksum ok?)
' ----------------------------------------
'Extracting that part of the sentence that is needed to calculate the checksum
ChkDat = Mid$(RMCstring, 2, InStr(RMCstring, "*") - 2)
dat = Split(RMCstring, ",")
'Calculating checksum and comparing it
ChkSum = Replace(dat(11), "*", "")
ChkSum = Left$(ChkSum, 2)
s = 0
l = Len(ChkDat)
For i = 0 To l
s = s Xor Asc(Mid$(ChkDat, i, 1))
Next
If s <> "&h" & ChkSum Then
decodeRMC.Checksum = False
Exit Function
End If

' ----------------------------------------
' UTC time and date
' ----------------------------------------
decodeRMC.DateTimeUTC = #12:00:00 AM#
decodeRMC.DateTimeUTC = DateAdd("h", CDbl(Mid$(dat(1), 1, 2)), decodeRMC.DateTimeUTC)
decodeRMC.DateTimeUTC = DateAdd("n", CDbl(Mid$(dat(1), 3, 2)), decodeRMC.DateTimeUTC)
decodeRMC.DateTimeUTC = DateAdd("s", CDbl(Mid$(dat(1), 5, 2)), decodeRMC.DateTimeUTC)
decodeRMC.DateTimeUTC = decodeRMC.DateTimeUTC + #1/1/2000#
decodeRMC.DateTimeUTC = DateAdd("d", CDbl(Mid$(dat(9), 1, 2)) - 1, decodeRMC.DateTimeUTC)
decodeRMC.DateTimeUTC = DateAdd("m", CDbl(Mid$(dat(9), 3, 2)) - 1, decodeRMC.DateTimeUTC)
decodeRMC.DateTimeUTC = DateAdd("yyyy", CDbl(Mid$(dat(9), 5, 2)), decodeRMC.DateTimeUTC)

' ----------------------------------------
' local time and date
' ----------------------------------------
ret = GetTimeZoneInformation(TZI)
nZoneCorrection = TZI.Bias
If ret = 1 Then
'TIME_ZONE_ID_STANDARD
nZoneCorrection = nZoneCorrection + TZI.StandardBias
ElseIf ret = 2 Then
' TIME_ZONE_ID_DAYLIGHT
nZoneCorrection = nZoneCorrection + TZI.DaylightBias
Else
Debug.Assert (0)
End If
nZoneCorrection = -nZoneCorrection
decodeRMC.DateTimeLocal = DateAdd("n", nZoneCorrection, decodeRMC.DateTimeUTC)

' ----------------------------------------
'ReceiverWarning
' ----------------------------------------
' GPS status: A means data is valid, V means data is invalid
If dat(2) "A" Or dat(2) "" Then
decodeRMC.ReceiverWarning = False
Else
decodeRMC.ReceiverWarning = True
End If

' ----------------------------------------
'Latitude (Length)
' ----------------------------------------
decodeRMC.Latitude = Val(dat(3))
decodeRMC.LatitudeDir = dat(4)
' convert NMEA $GPRMC-format position information to decimal-degrees representation
decodeRMC.LatDecDeg = Int(Val(dat(3)) / 100)
decodeRMC.LatDecDeg = decodeRMC.LatDecDeg + ((Val(dat(3)) / 100 - decodeRMC.LatDecDeg)) / 60 * 100
If dat(4) = "S" Then
decodeRMC.LatDecDeg = decodeRMC.LatDecDeg * -1
End If

' ----------------------------------------
' Longitude (Width)
' ----------------------------------------
decodeRMC.Longitude = Val(dat(5))
decodeRMC.LongitudeDir = dat(6)
' convert NMEA $GPRMC-format position information to decimal-degrees representation
decodeRMC.LongDecDeg = Int(Val(dat(5)) / 100)
decodeRMC.LongDecDeg = decodeRMC.LongDecDeg + ((Val(dat(5)) / 100 - decodeRMC.LongDecDeg)) / 60 * 100
If dat(6) = "W" Then
decodeRMC.LongDecDeg = decodeRMC.LongDecDeg * -1
End If

' ----------------------------------------
'SpeedKMH (needs to be converted from knots)
' ----------------------------------------
decodeRMC.SpeedKMH = Val(dat(7)) * 0.54

' ----------------------------------------
'Course without movement
' ----------------------------------------
decodeRMC.Course = Val(dat(8))

' ----------------------------------------
'MagneticDeclination
' ----------------------------------------
decodeRMC.MagneticDeclination = Val(dat(10))

' ----------------------------------------
'Final check on the date, year should be > 2000
' ----------------------------------------
If Year(decodeRMC.DateTimeLocal) < 2001 Then
decodeRMC.ReceiverWarning = True
End If

End Function


Public Function Utc2Local(ByVal tim As Long, ByVal dat As Long) As Date

' time format long, eg 203756 for 20:37:56
' date format long, eg 230605 for 23/06/2005

Dim t As String
Dim d As String
Dim TZI As TIME_ZONE_INFORMATION
Dim nZoneCorrection As Long
Dim ret As Long

' convert date and time to string
t = Right$(String$(6, "0") & CStr(tim), 6)
d = Right$(String$(6, "0") & CStr(dat), 6)
' UTC time and date
Utc2Local = #12:00:00 AM#
Utc2Local = DateAdd("h", CDbl(Mid$(t, 1, 2)), Utc2Local)
Utc2Local = DateAdd("n", CDbl(Mid$(t, 3, 2)), Utc2Local)
Utc2Local = DateAdd("s", CDbl(Mid$(t, 5, 2)), Utc2Local)
Utc2Local = Utc2Local + #1/1/2000#
Utc2Local = DateAdd("d", CDbl(Mid$(d, 1, 2)) - 1, Utc2Local)
Utc2Local = DateAdd("m", CDbl(Mid$(d, 3, 2)) - 1, Utc2Local)
Utc2Local = DateAdd("yyyy", CDbl(Mid$(d, 5, 2)), Utc2Local)
' local time and date
ret = GetTimeZoneInformation(TZI)
nZoneCorrection = TZI.Bias
If ret = 1 Then
'TIME_ZONE_ID_STANDARD
nZoneCorrection = nZoneCorrection + TZI.StandardBias
ElseIf ret = 2 Then
' TIME_ZONE_ID_DAYLIGHT
nZoneCorrection = nZoneCorrection + TZI.DaylightBias
Else
Debug.Assert (0)
End If
nZoneCorrection = -nZoneCorrection
Utc2Local = DateAdd("n", nZoneCorrection, Utc2Local)

End Function
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
12 août 2005 à 12:35
ok merci. Par contre qu'appel tu connecter en SPP ?
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
12 août 2005 à 12:26
pompier > ok dsl, javais pas saisi l'ironie :)
pompier0112 Messages postés 9 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 12 septembre 2005
12 août 2005 à 09:28
en faite moi celui que j'utilise est un gps bluetooth!!!, en faite il faut le connecter en SPP ca simule un port serie, et tu choisie son numéro de port. aprés son VB6 ca se traite comme un port normal:
Temp = MSComm1.Input

voili voila... si ca répond a ta question
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
12 août 2005 à 09:10
Super code !
Si quelqu'un sait comment recupérer les mêmes infos depuis un GPS Bluetooth : l'info est la bienvenue.

Pompier0112>>Concernant l'altitude, tu ne sait pas comment la traiter ou c'est simplement parce que quand on utilise ça en ville la variation de niveau est souvent négligeable.

PS : J'ai pas de Bac S (simple STT compta), mais ces calculs ne me posent pas de pb. ;-)

Bonne prog
pompier0112 Messages postés 9 Date d'inscription jeudi 9 novembre 2000 Statut Membre Dernière intervention 12 septembre 2005
12 août 2005 à 07:21
Sthephane > la phrase "je fait un méchant calcul pour trouver la distance parcourue" un de l'humour pour les personne qui y connaissent rien.
Le but de ce soft dans un premier temps a été de traiter les informations recu sur le GPS, la vitesse est venu qu'aprés ce rajouté desssus, sans vouloir ce prendre la tête !!!

pour info, la double integration ne me fait pas peur -> Bac S, Prépa, Ecole d'ingénieur (3 iéme année)
Merci quand meme de vos commentaire . (pour ceux qui y connaissent rien)
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
12 août 2005 à 00:25
bozo > j'ai mon bac S SI spé math

au vu de la phrase "je fait un méchant calcul pour trouver la distance parcourue" j'ai preferé expliquer "clairement" comment faire...

si je lui dit d'integrer 2 fois la distance parcourue, je sais pas s'il comprendra.
Donc je donne les formules.

a+
bozo76 Messages postés 1 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 août 2005
11 août 2005 à 21:23
Super Prog Pompier je le testerai mais bon j'ai TomTom3 qui me donne ma vitesse instantanée qui est a vrai dire très proche de mon compteur qlors pourquoi ne pas essayer les 2 pour comparer !!! et je te dirais ce que vaut ta vitesse moyenne par contre elle ne sera valable que lorsque tu sera à vitesse stabilisé et pas lorsque tu démarre ou tu freines !!! Mais bon tu es sur la bonne voix pour développer TomTom 6 alors continue !!!

Et Merci stephane tu viens de résoudre un problème de physique de 1ère S ... (à le bon vieux temps)
j'espère que tu auras ton bac avec cette jolie démonstration. (lol) à moins que tu l'ai déjà dans ce cas : félicitations.

Bon allez moi j'ai un dossier technique sur les propagations des champs électrique à rédiger en Anglais !!
@ ++
et Merci pour ce petit prog
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
11 août 2005 à 20:12
salut

je peux pas tester ta source tout simplement parce que j'ai pas de gps :D

en revanche ce que tu pourrait faire c'est en comparant la vitesse à t, et t-1, déduire l'acceleration, pour pouvoir obtenir une vitesse instantanée théorique.

je ne suis pas sur que ca fonctionne mais ca devrait.

en donnant v1 et v2 (v2 la nouvelle vitesse)
l'acceleration vaut : a=(v2-v1)/1
et donc la vitesse instantané, avec t compris entre 0 et 1

vt = v2 + a*t
avec v2 la derniere vitesse

t represente le temps en seconde depuis la derniere reception

voila, j'espere que ta compris mes explication, et qu'elles marcheront si tu les appliquent.
++
Rejoignez-nous