Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB.NET] Serialport voor uitlezen GPS

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 19-11 21:48
Ik heb een stuk code om via een comport GPS-data uit te lezen. (Zie onderstaande code).
Dit werkt op zich prima, maar nou wil ik detecteren of de verbinding met de comport is verbroken (Bluetooth gps buiten bereik ed.), en dan automatisch reconnecten indien dit weer mogelijk is (Bluetooth gps weer binnen bereik). Vooral het detecteren of de verbinding is verbroken daar zit ik mee. Ik had eerst met een 1-seconde timer een teller gemaakt, die na 10 seconden geen data meer te ontvangen de verbinding met de comport eerst verbreekt, en dan met een andere timer de poort om de 10 seconden weer probeert te openen (try-catch-end try). Dit werkte prima, maar ik vond de methode niet net.
Ik ben op internet wezen zoeken, maar kan niet echt voorbeelden vinden om op een nette manier automatisch te reconnecten. Heeft iemand hier een idee?


Visual Basic .NET:
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
Imports System.IO.Ports
Imports System.Threading

Public Class Comport

    'Dim Reconn As Boolean = False
    Shared Thread1 As Thread = New System.Threading.Thread(AddressOf ReConnect)
    'Dim PortTimeoutCounter As Integer
    Shared WithEvents Port As New SerialPort
    Shared Event ParseNMEA(ByVal NMEA As String)

   ' Shared Sub ReConnect()
        'Port.Open()
    'End Sub

    Shared Sub Connect(ByVal PortName As String, ByVal BaudRate As Integer)
        Port.PortName = Replace(PortName, "COM0", "COM")
        Port.Parity = Parity.None
        Port.BaudRate = BaudRate
        Port.StopBits = StopBits.One
        Port.DataBits = 8
        Port.ReadTimeout = 5000
        Try
            Thread1.Start()
        Catch ex As Exception
        End Try
    End Sub

    Shared Sub Port_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles Port.DataReceived
        ReadData()
    End Sub

    Shared Sub ReadData()
        While Port.BytesToRead > 0
            Dim NMEA As String = ""
            Try
                NMEA = Port.ReadLine() & vbLf
            Catch ex As TimeoutException
                Debug.Write("TimeOut..." & vbCrLf)
            End Try
            RaiseEvent ParseNMEA(NMEA)
        End While
        Application.DoEvents()
    End Sub

End Class

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com