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







Zitieren

Lesezeichen