Bonjour,
Voila un petit programme fait entre mes heures de repos au boulot sous VB 2005 pour lire les trames NMEA d'un GPS sur un PDA. Le port série utilisé est le COM6 (il est très facile de le changer, je regarderais plus tard pour gérer la configuration du port série). Il ne lit que 3 types de trame (GPGGA, GPVTG et GPRMC qui sont les principales utilisées en général).
Soyez indulgent c'est le premier code que je pose sur le site et c'est un des premiers que j'ai developpé.
Il tourne sur windows CE 5.0.
Merci de me laisser des commentaires (constructifs) si vous avez des remarques.
Source / Exemple :
Public Class Form1
Dim end_trame As Boolean
Dim trame(100) As Byte
Dim i, j As Byte
Dim no_trame1, no_trame2, no_trame3 As Byte
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "COM OFF" Then
Button1.Text = "COM ON"
SerialPort1.Open()
Timer1.Enabled = True
Else
Button1.Text = "COM OFF"
SerialPort1.Close()
Timer1.Enabled = False
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If end_trame = True Then
end_trame = False
If CheckBox1.Checked = True Then
no_trame1 = 1
If trame(4) = 71 Then
If trame(5) = 65 Then
While trame(j) <> 10
j = j + 1
TextBox1.Text = TextBox1.Text & Chr(trame(j))
End While
j = 0
End If
End If
Else
no_trame1 = 0
End If
If CheckBox2.Checked = True Then
no_trame2 = 1
If trame(4) = 77 Then
If trame(5) = 67 Then
While trame(j) <> 10
j = j + 1
TextBox1.Text = TextBox1.Text & Chr(trame(j))
End While
j = 0
End If
End If
Else
no_trame2 = 0
End If
If CheckBox3.Checked = True Then
no_trame3 = 1
If trame(4) = 84 Then
If trame(5) = 71 Then
While trame(j) <> 10
j = j + 1
TextBox1.Text = TextBox1.Text & Chr(trame(j))
End While
j = 0
End If
End If
Else
no_trame3 = 0
End If
If (no_trame1 = 0 & no_trame2 = 0 & no_trame3 = 0) Then
TextBox1.Text = "PAS DE TRAME SELECTIONNEE" & Chr(13) & Chr(10)
End If
End If
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
trame(i) = SerialPort1.ReadByte
If trame(i) = 10 Then
end_trame = True
i = 0
Else
i = i + 1
End If
End Sub
Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
End Sub
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.