- Labornetzteil AliExpress         
Ergebnis 1 bis 5 von 5

Thema: Flags setzen (?)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Ort
    Whv
    Beiträge
    89

    Flags setzen (?)

    Anzeige

    Powerstation Test
    Hi Leute. Danke fürs lesen. Hab folgendes Problem.
    Ich habde den Roboter Asuro, und möchte die Odometriedaten auslesen und speichern.
    z.B. ein Stück vor fahren und die hell/dunkel Stellen zählen.

    Ich kann zwr die Odometriedaten einlesen

    a=OdometrieData(odo);

    a verändert sich je nach hell,dunkel stelle

    bei dunkelstellen nehme ich einen wert von a >=500 an ( dunkel=höherer wert)

    also mache ich
    if (a>=500)
    Zaehler++;

    ---

    Nun das Problem: Der dunkelwert ist nicht nur einmal erreicht sondern bei
    Prozessordurchlauf mehrmals vorhanden, also würde eine einzige Dunkelstelle den Zähler hochschießen lassen ;(

    Was kann ich tun ? Hab in anderen Programmen Flags entdeckt, die sind mir leider noch nicht bekannt. Kann es mir jemand erklären oder einen Lilnk schicken wo der Syntax erklärt ist ??

    Vielen Dank

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2004
    Beiträge
    275
    Flags sind eine meist boolsche Variable.
    Du sicherst mit dem Flag ab das eine Operation nur einmal ausgeführt wird. Ein Beispiel:

    flag = false;

    tue dinge...
    if(!flag) { flag = true; zaehler++;..}

    Ich hoffe ich konnte dir ein wenig helfen.

    mfg Batti

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Ort
    Whv
    Beiträge
    89
    Danke für die schnelle Antwort.
    Hab ich glaub ich noch nicht ganz verstanden
    Aber werde ich mal ausprobieren.

    Wenn mit einem Flag abgesichert wird, dass der Zähler nur einmal hochgezählt wird, was ist, wenn sich das Gebilde in einer While Schleife befindet ? Der Prozessor geht beim Asuro das ganze Programm ja ständig durch
    while (1)
    {
    (Programmm)
    }

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2004
    Beiträge
    275
    Du möchtest eine Aktion nur einmal ablaufen lassen...
    Was musst du also tun? Du musst dir merken ob du dies schon einmal getan hast -> Flag

    Code:
    flag nicht gesetzt
    
    while(1) {
       if(!FlagGesetzt) tue aktion + flag setzen
    }

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    13.06.2006
    Ort
    Whv
    Beiträge
    89
    Okay, Prinzip ist verstanden )

    Mal schauen ob es klappt
    Kann man das Flag auch wieder wegnehmen ?
    Weil das Rad des Roboters dreht sich ja,
    und nachdem eine hellstelle gekommen ist, kommt eine Dunkelstelle, danach aber WIEDER eine hellstelle.
    Der Zähler soll ja permanent bei jeder neuen Hellstelle hochzählen und nicht nur einmal ))

    Aber ich probiere das erstmal aus, viell. beinhaltet das ja schon die Lösung

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen