Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

switch case

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Featurewunsch] switch case

    Mal wieder ein Wunsch, der unbedingt umgesetzt werden sollte :

    Das "switch-case"-Kommando-Set.

    Hintergrund:
    Durch das Validierungsschema wird die Programmierung des eibPCs sehr einfach.
    Leider fehlt eine Unterstützung für z.B. Abfragen, die "auswählen".

    Beispiele sind State-Maschinen oder selektive Bearbeitungen:

    [highlight=cpu]
    1.
    switch ( State ) {
    case ( "Init" ): { TCP=connecttcp(); State="Wait_for_Connect" }
    case ( "Wait_for_Connect" ): { if TCP==0 or TCP==3 then State="Send_Data" }
    case ( "Send_data"): { sendtcp(); State="Close_Connection"}
    case ( "Close_Connection"): { closetcp(); State="End"}
    case ( "End" ):
    case ( default ): { /* nichts tun */ }
    }

    2.
    switch ( Kommando ) {
    case ( "RAUF" ): { write( GA1, EIN); }
    case ( "RUNTER" ): { write( GA2, AUS); }
    case ( "STOP"): { write( GA1, AUS); }
    case ( "SCHLIESSEN"): { write( GA3, 100%); }
    }
    [/highlight]

    Insbesondere können durch switch-case auch Stolperfallen umgangen werden, die klassischen Programmierern gerne zum Verhängnis werden, wie im 1. Beispiel das setzen des neuen State bei einem if-then-else problematisch ist.

    Folgendes sollte erfüllt sein:
    • switch und damit der code des gültigen case, sollte zumindest entsprechend des Validierungsschemas bei Änderung der switch-Bedingung ausgeführt werden (also analog if-then).
    • falls für die switch bedingung das Validierungsschema gilt, sollte durch eval() oder after(1u64) oder andere Möglichkeiten die kontinuierliche Auswertung möglich sein.
    • das Ändern der switch-Bedingung sollte im gleichen Zyklus nicht zur Ausführung weiterer cases führen.
    • ein "Default" case sollte möglich sein
    BR
    Marc

    #2
    Dafür!
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar

    Lädt...
    X