Hi, ich muss im Rahmen eines Schulprojektes Daten, die eine AVR Platine sendet, mit VB6 empfangen und auswerten. Wie ich die MSComm Schnittstelle konfiguriere und wie ich die Daten im Event auslese weiß ich bereits. Die Nachricht wird mit einer Baud von 250k über einen FT232 gesendet und in ASCII übertragen. Eine Beispiel Nachricht: "$0,3,4.5352,3.25252,7.456456,3.555532@ Die Anzahl der Parameter zwischen den Kommas ist immer gleich. Mein Problem ist, dass ich nicht weiß, wie ich in VB6 so ein Frame erkennen kann. Wenn ein receive Event ausgelöst wird, sind ja idr. mehrere Zeichen im Buffer. Kann mir da vielleicht jemand einen Ansatz nennen? Oder einen Beispiel geben, den man noch irgendwo rumfliegen hat? Lg Philipp
Philipp schrieb: > Kann mir da vielleicht jemand einen Ansatz nennen? Das einfachste ist: lese zeichen if Zeichen = '$' { start = 1; puffer leer machen } if Zeichen = '@' { auswerten(puffer); start = 0; } if start = 1 puffer.add( zeichen ) Das ganze musst du nur noch in VB umsetzen.
Hi, viel dank. Ich habe jetzt auch endlich rausgefunden, wie ich mit Strings arbeite. Hier ist mein Code, ich denke das ganze sollte so passen. Lg Philipp
1 | Private Function check_buffer(str_data As String) |
2 | 'Datenpuffer und Kontrollvariable ob ein Startzeichen erkannt wurde |
3 | 'Frame: $[Int],[Byte],[Byte],[Byte],[Float],[Float],[Float],[Float],[Float]@ |
4 | 'Frame Nummer, Anzahl Zellen, Mosfet aktiv, Fault Pin, Sp1,Sp2,Sp3,Sp4,Strom |
5 | Static str_buffer As String |
6 | Static b_start As Boolean |
7 | |
8 | Dim l_tmp As Long |
9 | |
10 | 'Prüfe ob ein Startzeichen erkannt wurde |
11 | l_tmp = InStr(str_data, "$") |
12 | If l_tmp > 0 Then |
13 | 'Alles ab dem Startzeichen in den Buffer schreiben |
14 | str_buffer = Right$(str_data, Len(str_data) - l_tmp + 1) |
15 | 'Starterzeichenerkennung |
16 | b_start = True |
17 | 'Prüfe ob auch ein Endzeichen verfügbar ist |
18 | l_tmp = InStr(str_buffer, "@") |
19 | If l_tmp > 0 Then |
20 | 'Alles hinter dem Endzeichen abschneiden |
21 | str_buffer = Left$(str_buffer, l_tmp) |
22 | 'Buffer weiterverarbeiten |
23 | parse_buffer (str_buffer) |
24 | 'Startzeichenerkennung auf False und Funktion verlassen |
25 | b_start = False |
26 | Exit Function |
27 | End If |
28 | 'Funktion verlassen weil die Daten schon verarbeitet wurden |
29 | Exit Function |
30 | End If |
31 | |
32 | 'Wenn kein Startzeichen erkannt wurde aber Startzeichen schon vorhanden ist |
33 | If b_start = True Then |
34 | str_buffer = str_buffer + str_data |
35 | 'Prüfen ob Endzeichen vorhanden ist |
36 | l_tmp = InStr(str_buffer, "@") |
37 | If l_tmp > 0 Then |
38 | 'Alles hinter dem Endzeichen abschneiden |
39 | str_buffer = Left$(str_buffer, l_tmp) |
40 | 'Buffer weiterverarbeiten |
41 | parse_buffer (str_buffer) |
42 | 'Startzeichenerkennung auf False und Funktion verlassen |
43 | b_start = False |
44 | Exit Function |
45 | End If |
46 | End If |
47 | |
48 | MsgBox str_buffer |
49 | |
50 | End Function |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.