Hallo Ronny,
ehrlich gesagt kann ich mir nicht so recht vorstellen, dass deine Subs funktionieren. Mal abgesehen davon, dass dein Programm absolut nichts anderes machen kann, weil immer wieder die Waitkey() kommen.
Angenommen, ein Zeichen wird nicht richtig eingelesen, dann kommt das Programm hier nicht mehr raus:
M1:
Cc = Waitkey()
If Cc <> Mid(s , Ii , 1) Then
Goto M1
Bis dann irgendwann später doch mal zufällig das eingelesene Zeichen eines späteren GPS Satzes mit der aktuellen Position in S übereinstimmt.
Wie oben schon geschrieben, geht das mit dem URXC Interrupt viel sicherer und der µC ist nicht blockiert.
Dazu würde ich alle Zeichen einlesen bis ein CR auftauscht. Dann ist ein Satz komplett eingelesen.
Nun kannst du diesen in der Main Loop analysieren. Also etwa so:
Da sind jetzt vielleicht einige Sachen drin, die du nicht verstehst, aber das kommt schon noch.Code:Dim Gps_string As String * 100 Dim Gps_string_ovly(100) As Byte At Gps_string Overlay Dim Gps_words(15) as String * 12 Dim Gps_pos As Byte Dim GPS_complete As Byte On URXC Urxc_isr 'kommentiere die Config Serialin Zeile aus Enable URXC Open "COMB.0:115200,8,N,1" For Output As #1 Enable Interrupts Do If Gps_complete = 1 Then Gps_complete = 0 Word_count=Split(Gps_string, Gps_words(1), ",") 'Jetzt hast du alle Wörter in einem Array 'hier kommt die Auswertung hin End If Loop End Urxc_isr: Gps_string_ovly(Gps_pos)=UDR If Gps_string_ovly(Gps_pos) = 13 Then 'ASCII Wert von Carriage Return Gps_string_ovly(Gps_pos) = 0 'String Ende setzen GPS_complete = 1 End If Return







Zitieren

Lesezeichen