Public Sub ChercherInfoGPS()
Dim TmpChain1 As String, TmpChain2 As String, Idmsg As String, LongChaine As String, i As Integer, nm As Integer
Dim tab1() As String
Dim tab2() As String
Dim filenumber, nextline, nbp, lnc
On Error Resume Next
RecupInfoNum = RecupInfoNum + 1
'*****************************************************************************************************
'* neutralisation temporaire pour test
'LabelNbrRecup.Caption = CStr(RecupInfoNum)
'DoEvents
'MainForm.MSCommCAN(2).InputLen = 0
'TmpChain1 = MainForm.MSCommCAN(2).Input
'*****************************************************************************************************
' pour test, on lui fait bouffer des trames NMEA
filenumber = FreeFile
Open "c:\zozo.txt" For Input As #filenumber
Do Until EOF(filenumber)
Line Input #filenumber, nextline
TmpChain1 = TmpChain1 + nextline + Chr(13) + Chr(10)
Loop
Close #filenumber
'*****************************************************************************************************
tab1() = Split(TmpChain1, vbCrLf, -1) ' on eclate le buffer en lignes
For nm = 1 To UBound(tab1()) ' on traite chaque ligne
TmpChain2 = tab1(nm) 'les composants de chaque ligne sont éclatés en tableau
tab2() = Split(TmpChain2, ",", -1)
nbp = UBound(tab2())
If InStr(tab2(nbp), "*") > 1 Then 'on traite seulement les messages complets
Idmsg = tab2(0) ' on identifie le type de message
Select Case Idmsg
Case "$GPGSA" ' Nombres de satellites
SatUsed = 0
For i = 3 To 13
GPSSatUsed = Val(tab2(i))
If Val(GPSSatUsed) > 1 Then
SatUsed = SatUsed + 1
End If
Next i
' LabelNbrSatU.Caption = SatUsed
' Qualité de reception
GPSSatView = Val(tab2(2))
If Val(GPSSatView) > 0 Then
MainForm.lblGPS(0).Caption = SatUsed & " Sat"
Select Case Val(GPSSatView)
Case 2
MainForm.lblGPS(0).ForeColor = &H80FF& ' Orange &H80FF&
Case 3
MainForm.lblGPS(0).ForeColor = &HFF00& ' Vert &HFF00&
Case Else
MainForm.lblGPS(0).ForeColor = &HFF& ' Rouge &HFF&
End Select
End If
Case "$GPRMC" ' Vitesse
MainForm.lblGPS(4).Caption = ""
GPSSpeed = Val(tab2(7)) * 1.852
' GPSSpeed = GPRSString("GPRMC", 7, 5) * 1.852
If Val(GPSSpeed) > 0 Then
MainForm.lblGPS(4).Caption = "Vitesse : " & GPSSpeed & " km/h"
End If
' Latitude
MainForm.lblGPS(1).Caption = ""
PreviousGPSLat = GPSLat
GPSLat = tab2(3)
lnc = Len(GPSLat)
GPSLat = Left(GPSLat, 2) + "°" + Right(GPSLat, lnc - 2)
MainForm.lblGPS(1).Caption = "Lat : " & GPSLat
' Longitude
MainForm.lblGPS(2).Caption = ""
PreviousGPSLong = GPSLong
GPSLong = tab2(5)
lnc = Len(GPSLong)
GPSLong = Left(GPSLong, 2) + "°" + Right(GPSLong, lnc - 2)
MainForm.lblGPS(2).Caption = "Long : " & GPSLong
' Direction
MainForm.lblGPS(5).Caption = ""
GPSDirection = tab2(8)
MainForm.lblGPS(5).Caption = "Direction : " & GPSDirection + "°"
'Dim distance As Double
'distance = calcdistance(CDbl(PreviousGPSLat), CDbl(PreviousGPSLong), CDbl(GPSLat), CDbl(GPSLong))
Case "$GPGGA" ' Altitude
MainForm.lblGPS(3).Caption = ""
GPSAltitude = tab2(9)
MainForm.lblGPS(3).Caption = "Alt :" & GPSAltitude & " m"
End Select
End If
Next nm
End Sub