Hallo Community,
ich habe ein Gerät per Com Port angeschlossen, und möchte von diesem
Daten einlesen.
Um nicht benötigte Daten rauszufiltern, nutze ich RegEx: Ich will nur
Datenpakete einlesen, die mit Hex AA beginnen und mit Hex FF enden.
Das funktioniert mit folgendem Code auch, allerdings sendet das Gerät
auch "leere" Pakete: "AA-00-FF", immer zwischen den "vollen" Paketen.
Mein Problem:
Ich will daher mit RegEx nur Datenpakete matchen, die zwischen dem
Anfang (AA) und dem Ende (FF) mindestens 6 weitere Zeichen haben. Genau
das bekomme ich nicht hin.
Ich hab verschiedene RegEx Commands ausprobiert, aber ohne Erfolg
bisher.
Mein Code sieht aktuell so aus, mit dem wird auch auch AA-00-FF
eingelesen.
1 | Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
|
2 |
|
3 |
|
4 | Dim readexst As String = SerialPort1.ReadExisting
|
5 | Dim filtr As Regex = New Regex("(?<=\xAA).*(?=\xFF)")
|
6 | Dim mtch As Match = filtr.Match(readexst)
|
7 |
|
8 | If mtch.Success Then txtOrgStr.Text = mtch.Value
|
9 |
|
10 | 'stellt die Daten korrekt da
|
11 | Dim hexString As String = txtOrgStr.Text
|
12 | Dim arry As Byte() = Encoding.GetEncoding("ISO-8859-1").GetBytes(hexString)
|
13 | txtnew.Text &= BitConverter.ToString(arry)
|
Kann mir jemand sagen wie ich den RegEx Befehl entsprechend umschreiben
muss, damit zwischen AA und FF nur gematched wird, wenn mindestens 6
Zeichen dazwischen sind?
Danke schonmal für eure Hilfe