Hallo zusammen,
ich habe ein kleines Problem mit meinem Code (zu mindestens hoffe ich, dass es nur klein ist). Habe das Beispiel von https://www.roboternetz.de/wissen/in...e_Machine_Menu auf meine Bedürfnisse umgestellt um es auf einem Display darzustellen.
Das Problem ist, wenn ich in U110 gehe, soll je nach dem aus welchem Menüpunkt ich komme, die entsprechende Zeile farblich hervorgehoben werden. Nur leider klappt das nicht so wie ich mir das vorstelle, bzw. wird die richtige Zeile erst gehighlighted wenn ich eine Taste drücke, die keine Auswirkung auf die Darstellung des Menüs hat.
Ich hoffe es ist Verständlich was ich da an Code gepostet habe.....Code:Dim Keycode_string As String * 6 'Key_plus|key_minus|key_prev|key_next Keycode_string = "{056}{050}{052}{054}{057}{055}" Dim Keycode(6) As Byte At Keycode_string Overlay Do Debounce Pinc.6 , 0 , Up_press , Sub 'Keycode zuweisen hoch Debounce Pinc.7 , 0 , Down_press , Sub 'runter Debounce Pinc.4 , 0 , Minus_press , Sub 'links Debounce Pinc.3 , 0 , Plus_press , Sub 'rechts Debounce Pinc.5 , 0 , Ok_press , Sub 'OK Debounce Pinc.2 , 0 , Abbort_press , Sub 'Abbrechen Loop Change_state: lds R8, {State} lds R9, {State + 1} For I = 1 To 6 Read W 'Print Key If Key = Keycode(i) Then If W <> Loadlabel(null) Then State_renew = 1 Key = Key_null State = W End If End If Next I Read State_gosub Read Lcd_textbuffer Read Test_id Return S110: 'Programm 1 Adr2 Null : Adr2 Null : Adr2 Null : Adr2 S111 : Adr2 S120 : Adr2 S100 Adr2 U110 'Subroutine for current State Data " UMenu 1_10 " Data 1% S111: 'Programm 1 Adr2 Null : Adr2 Null : Adr2 S110 : Adr2 S112 : Adr2 S120 : Adr2 S100 Adr2 U110 'Subroutine for current State Data " UMenu 1_11" Data 2% S112: 'Programm 1 Adr2 Null : Adr2 Null : Adr2 S111 : Adr2 S113 : Adr2 S120 : Adr2 S100 Adr2 U110 'Subroutine for current State Data " UMenu 1_12" Data 3% Caller: LDS R31, {State_gosub+1} 'High see Bascom-Doc Mixing ASM and BASIC LDS R30, {State_gosub} 'Low LSR R31 'Division durch 2 (Alternativ ADR verwenden) ROR R30 'Call zum Sub ICALL Return U110: Label_count = 1 For Point = 20 To 60 Step 10 If Test_id = Label_count Then Call Lcd_print(text(label_count) , 10 , Point , 1 , 1 , 1 , Black , Green) Else Call Lcd_print(text(label_count) , 10 , Point , 1 , 1 , 1 , White , Dark_red) End If Label_count = Label_count + 1 Next Point Return Down_press: 'label für eine gedrückten Button Key = "{054}" Gosub Change_state_by_sub Gosub Caller Return







). Habe das Beispiel von
Zitieren

Lesezeichen