habe jetzt ein neues Programm mit overlay.
Wie Suche ich im array jetzt den Datensatzanfang s n p ?
Schift funktioniert nicht.
Wenn ich den dsz verändere, veränder ich auch die Speicherstelle des neu empangenen Bytes.
Wie kann ich also meine overlay Maske auf dem String verschieben?
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 Ss As Byte At S(1) Overlay
Dim Nn As Byte At S(1) + 1 Overlay
Dim Pp As Byte At S(1) + 2 Overlay
Dim Pt As Byte At S(1) + 3 Overlay
Dim Num As Byte At S(1) + 4 Overlay
Dim Pitch As Integer At S(2) + 5 Overlay
Dim Roll As Integer At S(2) + 7 Overlay
Dim Gyroz As Integer At S(2) + 9 Overlay
Dim Chk As Integer At S(2) + 11 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
'Check = Ss
'Check = Check + Nn
'Check = Check + Pp
'Check = Pt
'Check = Check + Num
'Check = Check + Pitch
'Check = Check + Roll
'Check = Check + Gyroz
If Dsz > 23 Then
'If Ss = 115 And Nn = 110 And Pp = 112 And Chk = Check Then
If Ss = 115 And Nn = 110 And Pp = 112 Then
Dsz = 0
Gosub Werteschreiben
Else
Shift S , Right ,1
End If
End If
Loop
Onrxd:
Incr Dsz
B(dsz) = Udr
Return
Werteschreiben:
Cls
Locate 1 , 1 : Lcd "gyroz= " ; Gyroz
Locate 2 , 1 : Lcd "Pitch= " ; Pitch
Locate 3 , 1 : Lcd "roll= " ; Roll
Return
End
Lesezeichen