Hier mal mein Code für das einlesen Per UART und Aufteilen des Strings in Bytes.
Code:
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 115200
Dim E As String * 13 'Länge des Strings hier einstellen. Abhängig von den gesendeten Kanälen.
Dim Gyroz As String * 1
Dim Gyroy As String * 1
Dim Gyrox As String * 1
Dim Accz As String * 1
Dim Accy As String * 1
Dim Accx As String * 1
Dim Anfang As String * 1
On Urxc Onrxd 'Interrupt auslösen, wenn volsändiges Zeichen geladen.
Enable Urxc
Enable Interrupts
'------------------------------------------------------------------------
Do
Anfang = Left(e , 1) '1. Byte lesen
If Anfang = "115" Then 'Anfang des Datensatzes abwarten,damit nicht mittendrin in den String geschrieben wird.
E = ""
End If
If Len(e) > 12 Then 'wenn kompletter Datensatz geschickt, dann in einzelne Variablen aufteilen.
Gosub Werte
End If
Loop
Onrxd:
E = E + Chr(udr) 'neu empfangenes Byte anhängen
Return
Werte:
Gyroz = Mid(e , 5 , 1) 'String e wird in die einzelnen Werte verteilt.
Gyroy = Mid(e , 6 , 1)
Gyrox = Mid(e , 7 , 1)
Accz = Mid(e , 8 , 1)
Accy = Mid(e , 9 , 1)
Accx = Mid(e , 10 , 1)
E = ""
Return
End
Warum kann ich den auseinandergeschnittenen String nicht als Byte Dimensionieren? z.B: Gyroz?
Ist das abwarten bis ein p(115) gesendet wird so richtig?
If Anfang = "115" Then
E = ""
Wenn jemand etwas auffällt, bitte Posten
Lesezeichen