Menüproblem

Totty

Neues Mitglied
07. Juni 2009
7
0
0
Sprachen
Halle,
ich habe ein Problem mit meinem Menü

eine Tastenmatrix erfasst meine Eingabe mit 4 Tasten
Hoch Links Rechts Runter

mein Menü hat 9 Punkte und der aktive Eintrag soll durchgeschoben
werden

Richtung Runter..1click...2click
Menüpunkt1 Menüpunkt1 Menüpunkt1
Menüpunkt2 Menüpunkt2 Menüpunkt2
Menüpnukt3 Menüpnukt3 Menüpnukt3
Menüpunkt4 Menüpunkt4 Menüpunkt4
Menüpunkt5 Menüpunkt5 Menüpunkt5
usw.

für die "positiver" Richtung nach unten funktioniert es nur in Richtung von unten nach oben -> Taste Hoch klappt es nicht

also wechsel von menüpunkt 5 nach menüpunkt 4
->neuer Menüpunkt ist 4 ->wechsel farbe blau =aktives Menü
->alter Menpunkt war 5 ->wechsel farbe grau
->neuer Tastendruck "hoch
->neuer Menüpunkt ist 3 ->wechsel farbe von grau nach blau =aktiv
->alter Menüpunkt ist 4 ->wechsel farbe von blau nach grau = inaktiv
usw.

der Tastendruck wird in einer "Schleife" ausgewertet

Incr A
If A = 10 Then
A = 1
End If

If A = 1 Then
Ly1_temp = Val(ly1posi_list(9) )
Else
Ly1_temp = Val(ly1posi_list(a - 1))
End If
Print #2 , "ly1_temp....... " ; Ly1_temp
Print #2 , "key_taste A............. " ; A

Call Lcd_print(temp , Lx1_temp , Ly1_temp , 2 , 1 , 1 , White , Dark_red) 'oldstate aktualisieren
Waitms Icon_waiting

If Menu_tempe = True Then
Temp = Tempmnu_list(a) 'Temperaturmenü aufrufen
Ly1_pos = Val(ly1posi_list(1))

Else
Temp = Menu_select_list(a) 'oder Hauptmenü aufrufen
End If

If A = 10 Then 'überlauf Tastenschleife
Ly1_pos = Val(ly1posi_list(1)) 'Menü Punkt 1 überschreiben
Else
Ly1_pos = Val(ly1posi_list(a)) 'neuen Meüpunkt überscreiben
End If
Print #2 , "key_taste A............................. " ; A
Print #2 , "ly1_temp................................. " ; Ly1_temp

Print #2 , "Ly1_pos.................................. " ; Ly1_pos
Call Lcd_print(temp , Lx1_temp , Ly1_pos , 2 , 1 , 1 , Blue , Dark_red) 'neuer Menüeintrag

Die Menüpukte und die Y-Position sind in einer Tabelle abgelegt
Mein Problem ist das ich es nicht hinbekomme das beim "durchschieben" des Menüeintrages von unten nach oben ( Taste Hoch) den letzen Menüeintrag
vor dem call Lcd_print Befehl mit dem "alten"Wert aus der Tabelle zu beschrieben
temp =aktueller Wert -1???? wie kann ich aus einer Tabelle
die Werte vor einem "aktuellen Wert" auslesen

bei mir ist temp= Menu_select_list (a) wobei a die schleife (1bis 9) ist
wie bekomme ich es hin das ich an den Wert des letzen aktiven Menüpunktes
rankomme ....
sry ich bin Anfäger ich bin über jeden auch völlig neuen Lösungsansatz dankbar.
ich habe schon ein statemenü probiert läuft auch im Terminal. Aber mein
display (2.1 "tft Diplay3000)hat mit statemenüs timingprobleme die ich nicht hinbekomme:stupido3:

ich hoffe irgend jemand kann mit meiner Problembeschreibung etwas anfangen:)

MfG Torsten
 
Zur besseren lesbarkeit hier der code nochmal:)


Code:
        Select Case Key_taste                               ' Taste Runter  als Schleife
                 Case 11 :

                  Incr A

                       If A = 10 Then
                          A = 1
                  End If


                  If A = 1 Then
                        Ly1_temp = Val(ly1posi_list(9) )
                       Else
                            Ly1_temp = Val(ly1posi_list(a - 1))
                  End If
                                       Print #2 , "ly1_temp.......    " ; Ly1_temp
                                       Print #2 , "key_taste A.............   " ; A

                  Call Lcd_print(temp , Lx1_temp , Ly1_temp , 2 , 1 , 1 , White , Dark_red)       'oldstate aktualisieren

                  Waitms Icon_waiting


                  If Menu_tempe = True Then
                  Temp = Tempmnu_list(a)                    'Temperaturmenü aufrufen
                   Ly1_pos = Val(ly1posi_list(1))


                  Else
                    Temp = Menu_select_list(a)              'oder Hauptmenü aufrufen
                      End If

                  If A = 10 Then                            'überlauf Tastenschleife
                        Ly1_pos = Val(ly1posi_list(1))      'Menü Punkt 1 überschreiben
                     Else
                        Ly1_pos = Val(ly1posi_list(a))      'neuen Meüpunkt überscreiben
                  End If
                                Print #2 , "key_taste A.............................   " ; A
                              Print #2 , "ly1_temp.................................    " ; Ly1_temp

                              Print #2 , "Ly1_pos..................................    " ; Ly1_pos
                  Call Lcd_print(temp , Lx1_temp , Ly1_pos , 2 , 1 , 1 , Blue , Dark_red)       'neuer Menüeintrag
 
Hi Totty,
sei bitte soo lieb und poste uns mal Deinen kompletten Code, damit wir einen Gesamtüberblick inkl. der auch von Dir angesprochenenTabelle haben.

Grüße,
Ma
 
hi Markus ,
ich habe die Zeit genutzt und mein Problem mit Hilfe eines Statemenü gelöst.:)
http://www.rn-wissen.de/index.php/Bascom_State_Machine_Menu
Muß erstmal so gehen.
Hast du damit schon erfahrungen damit gemacht ? Ich habe den Eindruck das die Änderungen im Menü etwas langsam zur Anzeige kommen.
Mit meinem ersten Versuchen, auf den sich auch meine Frage bezog,wollte ich eine Art Bedienoberfläche wie in jedem Handy zu finden aufbauen.Leicht zu erkennende Icons die per links, rechts, hoch und runter angesprochen werden
und durch "press Enter"eine entsprechendes Menü öffnen.Zum üben wollte ich erstmal strings mit ihrer dazugehörigen x und y position auf meinem Display ausgeben und auswerten.Diese wollte ich später durch icons ersetzen.Für diese Art der "Bedienoberfläche" muß ich erstmal noch mehr Erfahrungen sammeln.Ich nutze deine Tastaturmatrix :) war leicht nachzubauen und leicht zu verstehen.
So muß erstmal an meiner Schaltung weiter machen
MfG Torsten
 
Hi Torsten,

das hört sich ja gut an :p

Welche der Varianten in Deinem Link hast Du denn realisiert? Variante 1 und Variante 2. Ich hatte Variante 1 nur mal kurz überflogen und kann leider dazu nichts sagen da ich mir Variante 2 etwas genauer betrachtet und dann auch in meinem Wintergartensteuerungsprojekt umgesetzt habe.

Dabei habe ich zunächst den Code so übernommen wie er in Variante 2 enthalten ist, auf Basis dessen dann aber für mein eigenes Menü umgebaut und erweitert. Ich finde Variante 2 ist super schnell wenn man weiß wie es funktioniert. Der Update der Stati welche dazu verwendet werden um zu steuern, ob sich am Menü etwas geändert hat und wann etwas mit welchem Stati zur Anzeige kommt ist sehr trickreich.

Unter dem Link http://www.avr-praxis.de/forum/showthread.php?t=160 findest Du das Projekt hier im Forum.

Auf meiner Homepage http://www.kleinmaeusiges.de findest Du das Projekt sehr ausführlich unter Elektronik beschrieben. Dort findest Du auch meine Menüstrukturen genauer beschrieben.

Ich war sehr zufrieden mit der Statemachine und habe bisher noch keine bessere Implementierung gefunden.

Du solltest aber, damit Du die State-Machine für Deine Zwecke nutzen kannst den besetehenden Code sehr eingehend ansehen und auch verstanden haben.

Viele Grüße,
Markus
 
Hi Markus
ich habe den code aus dem 2.Beispiel übernommen und nachdem ich die übergabe der Tastencode begriffen habe läuft es bei mir :) .Das beispiel ist dort auch ausreichend erklärt .
 
Totty,

hei super, Glückwunsch!

Wie gesagt, es ist die beste Implementierung einer Statemachine für Menüsteuerungen die ich bisher gesehen habe.

Die Implementierungen sind super minimal und wenn Du anfängst das Gerüst zu erweitern wirst Du feststellen, dass der Speicherverbrauch durch die Tabellen nur geringfügig zunimmt. Ich war überrascht, wie wenig Speicher ich mit meinem riesigen Menü für die Wintergartensteuerung verbrauche. Das kann man mit normaler Programmierung garnicht mehr handeln. Und pflegen schon garnicht.

Viele Grüße und schönes WE,
Markus
 
State Machine

Hallo,

auch ich versuche zur Zeit ein Menü umzusetzen. Dafür würde ich gerne mehrere Tasten verwenden.
Ich würde gerne den Code von RN-Wissen verwenden, steige aber noch nicht durch.

Kann mir jemand sagen, wie ich den Code so anpasse, dass ich Tasten auf meinem Testboard als Eingabe verwenden kann?

Danke und Gruß
Christian
 
Hallo Christian,

ich versuche Dir mal bei dieser Geschichte zu helfen. Dabei habe ich Dein Problem noch nicht begriffen. Aber mal sehen, vielleicht kommst Du mit den folgenden Infos schon etwas weiter.

Also, zunächst ist es prinzipiell egal auf welchem Wege Du Tasteneingabe machst. Das kann ein Taster an einem Port sein oder Tastenwerte über RS232 oder oder oder. Das ist zunächst egal. In meinem Projekt für die Wintergartensteuerung mache ich nichts anderes. Da habe ich auch 9 Tasten in einer 3x3 Matrix am Kontroller hängen.

Mit den Tasten erzeuge ich mir meine eigenen Keycodes die ich definiert habe und damit ist das meiste schon gemacht. Aber schauen wir uns das der Reihe nach an. Dabei beziehe ich mich auf das 2. Beispiel der Beispiecodes.

Zunächst wird mit key_buttons = x die Anzahl der verwendeten Tasten festgelegt. Im Beispiel sind es 4, ich habe bereits schon 5 Tasten. Das ist die Konstante für die Schleife welche anschließend über die Tabelle läuft und die entsprechenden Stati ausliest.

In der Struktur Keycode_string wird für jede Taste der zugehörige Keycode oder selbst festgelegte Tastenwert abgelegt welcher anschließend zu einem entsprechenden Ereignis oder einer Verzweigung im Menü führen soll.

Im Beispiel wird es so gemacht:
Code:
Keycode_string = "{056}{050}{052}{054}"                     'see scan codes in ASCII chart
Dim Keycode(key_buttons) As Byte At Keycode_string Overlay

Ich habe es so realisiert:
Code:
' MENUE: Strukturen und Variablen
   ' Tastencodes
   Key_codes(1) = 12                                        ' Taste Hoch
   Key_codes(2) = 42                                        ' Taste Runter
   Key_codes(3) = 41                                        ' Taste Links
   Key_codes(4) = 44                                        ' Taste Rechts
   Key_codes(5) = 22                                        ' Taste Enter

Mehr ist auch schon fast nicht zu tun. Es gibt noch einen Punkt den Du beim Aufbau der Datentabelle berücksichtigen musst. Schauen wir uns dazu eine Datenzeile mal an:

Code:
S10:
         Adr2 Null : Adr2 S20 : Adr2 Null : Adr2 S11        'Key_plus|Key_minus|Key_prev|Key_next
         Adr2 Null                                          'Subroutine for current State
         Data "1 Butterfly Bascom"                          'Menue Display Text

Für jede Taste muss es genau eine ADR2 Adresse geben damit das Programm weiß wo es hinspringen soll. Deswegen findest Du in der 1. Zeile auch 4 Adr2-Adressen. Null ist ein Platzhalter und er bedeutet tue nix. S20 und S11 sind Labels die bedeuten, dass die Statemachine auf einen neuen Menüpunkt umschaltet, ggf. Bildschirmausgaben macht oder eine Funktion aufruft.

Ich habe z.B. fünf Tasten und dasnn sieht das ganze so aus:
Code:
         ' Hoch       Runter      Links       Rechts      Enter
         Adr2 Null : Adr2 Null : Adr2 Null : Adr2 Null : Adr2 Null

Die 2. Zeile beinhaltet das Sprunglabel für ein Unterprogramm oder eine Funktion die Du aufrufen möchtest. Du kannst hier NULL stehen haben dann passiert nix oder Du definierts Dir eine Gosub-Funktion. Die kannst Du dann hier aufnehmen. z.B.:
Men8b:
Code:
            ' Hoch        Runter       Links       Rechts        Enter
            Adr2 Men8a : Adr2 Men81 : Adr2 Men8 : Adr2 Men8b1 : Adr2 Men8
[B]            Adr2 Null[/B]            Data &B00000011
            '     1234567890123456
            Data "8-11       11/11"
            Data "  Min/Max-Werte"
            Data ""

Die 3. Zeile ist der Displaytext des akt. Status als DATA Feld der auf dem Bildschirm asugegeben werden soll. Hier musst Du immer etwas angeben, und wenn es ein Leerstring ist, z.B. DATA "".

Im Beispiel hast Du nur eine LCD-Zeile. Ich habe z.B. drei zeilen für mein Display definiert. Das bist Du völlig frei. Du must nur daran denken, in der Routine die Zeilen für die zusätzlichen Data-Felder zu ergänzen.

Im Original heißt es so:
Code:
Read Lcd_textbuffer                                     'read LCD text

Bei 3 Zeilen würde es halt so heißen:
Code:
   ' Textzeilen für LCD-Ausgabe einlesen
   Read Menue_lcd_textbuffer(1)                             'read LCD text
   Read Menue_lcd_textbuffer(2)                             'read LCD text
   Read Menue_lcd_textbuffer(3)                             'read LCD text

Eigentlich alles kein Hexenwerk. Aber ich gebe Dir recht, die Routinen sind sehr trickreich und höchst effizient programmiert.
Du solltest Dir vor allem den Programmrumpf genau ansehen und Du solltest verstanden haben was die State-Machine macht. Danach ist eine Erweiterung in beliebigen Himmelsrichtungen kein Problem mehr.

Grundlegen funktioniert es so:
Im Beispiel werden zunächst die Datenstrukturen initialisiert und es wird der erste Menüpunkt automatisch angesprungen. Danach wartet die Routine mit Waitkey(). Ich habe das anders gelöst den mein Programm soll immer etwas tun. Deswegen habe ich das auseinandergedröselt und steuere meine Machine über Flags. Das ist aber auch simpel. z.B. so:

Code:
      ' Wenn Taste noch nicht durch Hot-Key abgefangen dann Menü
      If Key_taste <> 0 Then

         'Menüeintrag und Tastencodes finden und ggf. State wechseln
         'hier nur Tastendruck auswerten
         Gosub Menue_change_state

         'Pointer nach Statuswechsel neu setzen
         If Menue_state_renew = 1 Then
            Gosub Menue_change_state
         End If                                             ' Menü-Update angefordert

         ' Bereits schon LCD refresh auslösen bevor Unterprogramm angesprungen
         ' wird da im unterprogramm ggf. noch Inhalte ergänzt werden.
         If Menue_state_renew = 1 Then
            Menue_state_renew = 0
            Gosub Lcd_print
         End If                                             ' Erneutes Menü-Update prüfen

         'Unterprogramm des aktuellen State anspringen
         Gosub Menue_call_subroutine

      End If                                                ' Menüsteuerung


Wenn nun eine Taste betätigt wurde so rennt eine For-Schleife über die Anzahl der Tasten und schaut in der Tabelle des aktiven Menüpunkt unter dem aktuell aktiven Label nach ob auf eine Taste reagiert werden soll und wo hinzuspringen ist. Du hast in den Daten für jede Taste genau beschrieben ob und wohin gesprungen werdensoll.

Außerdem wird geprüft, ob eine Gosub-Routine als Sprungziel hinterlegt ist. Wenn ja wird die gosub Routine aufgerufen, die Statemachine wird auf den neuen Label umgeladen. Das passiert mit Change_State. Ja, und schon hat die Statemachine umgeschaltet, ggf. die Displaytexte ausgegeben und fertig.

Ich gebe zu, der Teufel steckt im Detail aber Du solltests es wenigstens grundlegend verstanden haben, dann können wir weitermachen. OK?

Ich hoffe ich konnte Dir mit dieser "kurzen" :D Einführung ein bissle helfen.

Grüße,
Markus
 
Hallo Markus,

vielen Dank für die umfangreiche Erklärung. Beim ersten überfliegen sieht das so aus als würde es mir weiterhelfen. Jetzt muss ich nur noch die Stelle finden, wo ich meinen Tasten einen Port zuweise, und dann das Betätigen der Tasten abfrage.

Ich werde mir das am Sonntag mal in Ruhe anschauen. Derzeit habe ich den SourceCode sowieso nicht vorliegen, weil ich am Büro-Rechner sitze.

Gruß
Christian
 
Hallo zusammen,

ist schon eine tricky Routine ;)
Muß ich mir mal in ner Mußestunde richtig ansehen aber so langsam
klickert der Groschen Pfennigweise (oder der 10er Centweise ;) ).

Man hat eine Tabelle in der drinsteht, bei welchem Tastendruck die Maschine
zu welcher anderen Tabellenzeile (oder auch garnicht - bei NULL) weiterspringen
soll. Außerdem sind die Textmeldungen für die Menüeinträge in der Tabelle und
auch die Adressen wenn ein Unterprogramm angesprungen werden soll.
Ist eigentlich nicht schlecht :D

Ich hab mich mal gefragt ob man das nicht auch mit Assembler machen kann.
Ich hab auch ne Antwort gefunden - Ja es geht.
Zuerst haben mich die dynamischen Zieladressen aus der Tabelle etwas rätseln
lassen ob es da einen Befehl gibt - ES GIBT IHN :D :D ICALL + IJMP
Damit kann man eine Adresse im Flash anspringen die sich im Z-Register
befindet. Also ein Sprungbefehl, dem man beliebige Adressen unterjubeln
kann die man irgendwo anders (zB aus der Tabelle) her bekommt. Es sollte
also ohne Probleme umzusetzen sein.

ICALL und IJMP arbeiten auch mit 22Bit-Adressen. Dabei werden aber die
oberen Bits (16..21) mit 0 gefüllt. Nur die unteren (0..15) werden aus dem
Z-Register geholt da es ja auch nur 16Bit hat. Wenn man also in den
Bereich oberhalb von 64k-Worte (128kBytes) springen möchte, dann muß
man mit einer Sprungtabelle (so wie die Interrupt-Vektor-Tabelle) arbeiten.

Gruß
Dino
 
Hi @All

Man hat eine Tabelle in der drinsteht, bei welchem Tastendruck die Maschine
zu welcher anderen Tabellenzeile (oder auch garnicht - bei NULL) weiterspringen
soll. Außerdem sind die Textmeldungen für die Menüeinträge in der Tabelle und
auch die Adressen wenn ein Unterprogramm angesprungen werden soll.
Ist eigentlich nicht schlecht

In der Tat, ich habe bisher noch nichts besseres, schnelleres und optimierteres gesehen. Selbst bei großen Menüs wie ich schon eines gemacht habe, ist der Speicherverbrauch marginal. Und das Menü bleibt übersichtlich. So etwas kann man diskret nicht mehr programmieren.

@Dino; ich freue mich auf Deinen Assembler-Ansatz :pleasantry:

Grüße,
Ma
 
Hallo Markus,

vielen Dank für die Erklärungen, Ich habe es hinbekommen.
Mein Programm kann nun auf Basis des Menüs entstehen.
Ich habe die Tastenabfrage auf folgendem Weg gelöst:

- Pins für Tasten als Eingang definiert
- Timer0 als Timer laufen lassenm, bei überlauf einen Interrupt auslösen
- Im Interrupt mit Debounce meine Tasten abfragen
- in der Debounce- Subroutine der Variablen "Key" den Wert der zugehörigen Taste zugewiesen (also passend für rauf, runter, links, rechts)

Und das funktioniert im Sim und auf meinem Testboard.

Jetzt kann ich das Menü aufbauen, und die Routinen für die einzelnen Funktionen entwickeln.

Gruß
Christian
 
Hallo Christian,

glückwunsch!

Bin mir zwar nicht sicher ob Dein Konstrukt mit debounce und Timer nicht ein bissle oversized ist aber dazu kenne ich Deinen Code zu wenig und ich weiß nicht, was Du ja noch alles in Deinem Programm machen möchtest.
Die Methode hier mit einem Timer zu arbeiten entspricht so ein bissle der Theorie des preemtiven Multitaskings. Du unterbrichst für eine bestimmte Zeit die Programmabarbeitung und schaust nach Deinen Tasten. Kann man so machen aber:

1. bedenke, dass der Debounce jeweils eine Wartezeit von 25 ms via Default eingestellt hat mit der er eine Taste entsprellt. Mit Config Debounce kann man das zwar verändern aber eine gewisse Zeit wirst zu zum Entprellen der Tasten benötigen.

2. falls mehrere Überwachungsfunktionen und zeitkritische Aufgaben hinzu kommen könnte es sinnvoller sein die Abfrage der Tasten anders zu gestallten.

3. ggf. solltest Du Dir nochmals die Prioritäten des Interrupts ansehen, nicht dass Du Dir mit anderen Funktionen ins Gehege kommst.

Aber ich sag immer, warum nicht so machen, solange es funktioniert. Wenn es irgendwann nicht mehr funktioniert dann denke über meine Punkte 1-3 nach!

Grüße,
Markus
 
Hallo Markus,

aus meiner Sicht sollte das so unkritisch sein.
Die Funktion des Programms läuft später grob so ab:
- Start des Programms
- letzte Werte aus dem EEPROM lesen
- Werte für Panorma-Aufnahme erfassen (Brennweite des Objektivs, Breit und Höhe)
- Parameter für die Fotografie erfassen (Geschwidnigkeit der Schrittmotren, Bremsverhalten, Wartezeit vor Aufnahme, Wartezeit für Aufnahme)
- Start des Panoramas

Während des Panos läuft zwar der Interrupt weiter, aber es erfolgt keine Tasteneingabe. Somti entsteht auch keine Wartezeit durch den Debounce. Dies sollte den Ablauf des Programms somit nicht stören, und wenn doch dann so minimal, dass es bei den Panos nicht auffällt.

Gruß
Christian
 
Ja ok, wollte es nur gesagt haben. Wünsche Dir viel Spass beim Pano fotografieren und zusammenbasteln.

Frage am Rande; welche Software verwendest Du denn um die Panos dann zusammenzubauen?

Grüße,
Ma
 
Hallo Markus,

derzeit verwende ich entweder Hugin als open Source oder ein Tool von Microsoft Research "Microsoft Image Composite Editor". Ist kostenlos und liefert meiner Meinung nach sehr gute Ergebnisse.

Gruß
Christian
 
Hi Christian,

hast Du schon mal die Funktion "PhotoMerger" von PhotoShop ausprobiert oder kennst Du das PanoramaStudio?

Ich probiere gerne Sachen mit dem Panorama-Stuido aus. Das verwende ich auch dann gleich dazu um die Panos mit JAVA-Script auf meiner Homepage zu "viewen". Funzt ganz gut und die Ergebnisse können sich sehen lassen.

Na dann wünsche ich Dir mal viel Spass weiter. Ist ein spannendes Thema!

Grüße,
Ma
 
Hallo,
der Thread ist zwar schon etwas älter, aber er entspricht ziemlich genau meinem aktuellem Problem.

Was wäre die Alternative zum debounce befehl?
Aktuell versuche ich eine Menüstruktur mit 3-4 Leveln zu gestalten, aber jedesmal mit dem debounce befehl an eine andere
Stelle zu springen ist schon sehr unübersichtlich.
Je nach Position im Menü hat die "runter" taste ggf. eine andere Funktion. (Entweder den Wert verringern, oder den Menüpunkt wechseln...

Wie hast du die Tastenentprellung gelöst? Du schreibst ja auch das das mit dem debounce nicht so der Hit wäre.
 
der Thread ist zwar schon etwas älter, aber er entspricht ziemlich genau meinem aktuellem Problem.


Hallo Tenor!

Ich denke es wäre doch besser, wenn du einen neuen Thread eröffnest und dein Problem selbst vorstellst.

Dieses Thema ist schon zig Jahre alt und in der Zeit hat sich manchmal auch programmiertechnisch bei den Hochsprachen einiges geändert.
Außerdem müssen jetzt alle das alte Thema von Grund auf neu lesen und anschließend haben sie immer noch keinen Plan von DEINEM Programm!

Vielleicht stellt sich ja heraus, dass deine Menüstruktur überarbeitungsbedürftig ist und es mit dem DEBOUNCE-Befehl nicht getan ist.


Sei also so gut und eröffne ein neues Thema mit allen Fakten, die ein User zum Helfen benötigt.


Danke und Gruß,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)