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?
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