so, bin nun wieder vom urlaub zurück und kann mich wieder meinen hobby widmen...
der obenstehende stream würde wie folgt aufgeteilt:
Code:
Source Device : Broad. 1
Destination Device : Light Ctrl
Data - - - - - - - - - - - -
7A 21 20
z !
Full Packet - - - - - - - - -
00 05 BF 7A 21 20 C1
-----------------------------
Source Device : Broad. 1
Destination Device : Light Ctrl
Data - - - - - - - - - - - -
7A 61 20
z a
Full Packet - - - - - - - - -
00 05 BF 7A 61 20 81
-----------------------------
Source Device : UNKNOW 3
Destination Device : Light Ctrl
Data - - - - - - - - - - - -
74 04 01
t . .
Full Packet - - - - - - - - -
44 05 BF 74 04 01 8F
-----------------------------
Source Device : UNKNOW 6
Destination Device : Broad. 1
Data - - - - - - - - - - - -
58 FF 7F 00
X . . .
Full Packet - - - - - - - - -
E8 06 00 58 FF 7F 00 36
-----------------------------
Source Device : UNKNOW 6
Destination Device : Nav Locat.
Data - - - - - - - - - - - -
59 10 00
Y . .
Full Packet - - - - - - - - -
E8 05 D0 59 10 00 74
-----------------------------
Source Device : UNKNOW 6
Destination Device : Nav Locat.
Data - - - - - - - - - - - -
59 50 00
Y P .
Full Packet - - - - - - - - -
E8 05 D0 59 50 00 34
-----------------------------
Source Device : IKE
Destination Device : Light Ctrl
Data - - - - - - - - - - - -
11 01
. .
Full Packet - - - - - - - - -
80 04 BF 11 01 2B
-----------------------------
Source Device : IKE
Destination Device : Light Ctrl
Data - - - - - - - - - - - -
13 00 00 00 00 00 00 87
. . . . . . . .
Full Packet - - - - - - - - -
80 0A BF 13 00 00 00 00 00 00 87 A1
-----------------------------
Source Device : Nav Locat.
Destination Device : Light Ctrl
Data - - - - - - - - - - - -
5B 00 00 00 00
[ . . . .
Full Packet - - - - - - - - -
D0 07 BF 5B 00 00 00 00 33
-----------------------------
1. Byte = Absender
2. Byte = Länge
3. Byte = Empfänger
4. Byte = Datenbyte1
5. Byte = Datenbyte.....
......
Letztes byte = CRC
Länge = Datenbytes + CRC
Mein Problem ist immer noch, bestimmte nachrichten herauszufiltern.
Es funktioniert tadellos mit dem code vom Beitrag ganz oben, aber dafür
brauch ich für jeden gesuchte nachricht unmengen an variablen....
jetzt mach ichs grad wie in dem code hier:
Code:
If Ischarwaiting() <> 0 Then 'Daten einlesen
Inputbin Ibusbin
Ibushex = Hex(ibusbin)
Hexstring = Hexstring + " "
Hexstring = Hexstring + Ibushex
If Len(hexstring) >= 50 Then Hexstring = Mid(hexstring , 19 , 33)
If Hexstrcheck( "50 03 C8 01 9A") = 1 Then 'Mfl-Frage an Tel
Sendmfl = 1
End If
If Hexstrcheck( "3B 03 C8 01 F1") = 1 Then 'Navi-Frage an Tel
Sendnav = 1
End If
.........
Function Hexstrcheck(byval Gesucht As String) As Byte ' für Tasenerkennung
Pos = Instr(hexstring , Gesucht)
If Pos <> 0 Then
Hexstring = ""
Hexstrcheck = 1
End If
End Function
..........
hier schreibe ich die UART daten im hexformat in nen string der sich immer
wieder so verschiebt, dass wenn die gesuchte nachricht kurz vor ende des
strings kommen würde, diese nicht aufgeteilt und somit mittels instr gefunden wird.
mit dieser methode lässt sich der code sehr einfach um mehrere gesuchte
nachrichten erweitern...
leider ist die ganze string verschieben und instr sache extrem umständlich
und rechenaufwändig.
da es kein start, stopbyte und feste länge gibt. kann ich auch nicht nach einer art maske suchen.
fällt jemanden von euch eine leicht zu erweiternde und nicht all zu rechenintensive möglichkeit ein, nach mehreren bestimmten nachrichten
im "uart-stream" zu suchen.
danke und nen schönen sonntag
Lesezeichen