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