Hallo Richard,
habe den befehl eingebunden.
Funktioniert aber leider so nicht.
Vitis hat mir noch den Tipp gegeben ein 2. overlay array einzubinden, um den gefundenen Datensatz komplett im 2. overlay zu zertrennen.
Das habe ich nicht hinbekommen.
Hier mal der neue Code:
Code:
$regfile = "m168def.dat"
$crystal = 18432000
$baud = 115200
Dim Z As Byte
Dim I As Byte
Dim S As String * 24
Dim B(25) As Byte At S Overlay
Dim Dsz As Byte
Dim Check As Integer
Dim Pos As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
'Dim Pitch As Integer At S(2) + C Overlay
'Dim Roll As Integer At S(2) + D Overlay
'Dim Gyroz As Integer At S(2) + E Overlay
'Dim Chk As Integer At S(2) + F Overlay
On Urxc Onrxd 'Interrupt auslösen, wenn volsändiges Zeichen geladen.
Enable Urxc
Enable Interrupts
Config Lcd = 16 * 3 , Chipset = Dogm163v5
Config Lcdbus = 4 'configure lcd screen
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portd.2 , Rs = Portd.3
Waitms 100
Initlcd
Waitms 100
Display On
Cursor Off Noblink
Cls
Do
Zurueck:
If Dsz > 23 Then
Cls
Dsz = 0
Pos = Instr(s , "snp")
C = Pos + 6
D = Pos + 8
E = Pos + 10
F = Pos + 12
Dim Pitch As Integer At S(2) + C Overlay
Dim Roll As Integer At S(2) + D Overlay
Dim Gyroz As Integer At S(2) + E Overlay
Gosub Werteschreiben
End If
Loop
Onrxd:
Incr Dsz
B(dsz) = Udr
Return
Werteschreiben:
If Pos = 0 Then 'wenn pos =0 dann wurde snp nicht gefunden
Goto Zurueck
End If
Cls
Locate 1 , 1 : Lcd "Pitch= " ; Pitch
Locate 2 , 1 : Lcd "roll= " ; Roll
Locate 3 , 1 : Lcd "gyroz= " ; Gyroz
'Lcd "pos= " ; Pos
Return
End
Kann den code mal jemand für mich berichtigen?
So gibt mir das Display für alle 3 Werte 28275 aus mit ein paar Störungen zwischendurch.
Dim in der Programmschleife ist ja auch nicht so prickelnd oder?
Ich hätte nicht gedacht, das ich an dieser Sache so hängen bleibe.
Lesezeichen