## c't-Projekte - Mailinglisten

[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

### Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe

Absender: Benjamin Benz
Datum: Mi, 26.04.2006 11:49:56
In-reply-to: <1773210496.20060426072435@xxxxxxxxxxxxxxxxx>
References: <006901c668cf$6bf19030$2201a8c0@user08> <1773210496.20060426072435@xxxxxxxxxxxxxxxxx>

    Hallo,

    > Als organisatorisches Detail kann es vielleicht schon ausreichen, ganz
    > schlicht zwei Verzeichnisse zu verwenden - "LowLevel" mit allen
    > Quellen, die der High-Level-Programmierer in der Regel nicht braucht
    > und "HighLevel" vielleicht mit einem Template. Der Compiler uebersetzt
    > dann einfach alles.

    Aber genau das ist doch derzeit im Code der Fall. Es gibt 4 Verzeichnisse:

    1x Low-Level-Kram AtMega32 (./mcu/)
    1x Low-Level-Kram PC (./pc/)
    1x Sammlung der Schnittstellen (./include/)
    1x Alles abstrakte und High-Level Routinen (./)

    Ich verstehe die ganze Diskussion und auch diesen Vorschlag beim besten
    willen nicht, denn alles was vorgeschlagen wird ist schon von Anfang an
    im Framework drin.

    Und ja, es ist modular. Es ist sehr genau nach High-, Middle- und
    Low-Level-Funktionen untergliedert. Wer an Low-level sachen nicts ändern
    will, kann die Verzeichnisse (./pc/ und ./mcu/) ignorieren.

    Wer nur ein ganz einfaches verhalten schreiben will, nimmt einfach das
    dafür vorgesehene Skelet bot_simple_behaviour() und füllt es aus. er
    bekommt nicht einmal vom Framework etwas mit. Damit jetzt jeder (ohne
    selbst in den Code zu schauen) sieht, was ich meine, hier ein kleines
    Verhalten, mit dem der Bot in einem Quadrat patrouliert:

    void bot_drive_square_behaviour(Behaviour_t *data){
      #define STATE_TURN 1
      #define STATE_FORWARD 0
      #define STATE_INTERRUPTED 2

      static uint8 state = STATE_FORWARD;

      if (data->subResult == SUBFAIL) // letzter Auftrag schlug fehl?
      	state= STATE_INTERRUPTED;

      switch (state) {
        case STATE_FORWARD: // Vorwaerts
          bot_goto(100,100,data);
          state = STATE_TURN;
          break;
        case STATE_TURN: // Drehen
          bot_goto(22,-22,data);
          state=STATE_FORWARD;
          break;
        default:	// Sind wir fertig, dann Kontrolle zurueck an Aufrufer
          return_from_behaviour(data);
          break;
      }
    }

    MfG Benjamin Benz
    --
    Benjamin Benz
    Heise Zeitschriften Verlag
    Redaktion c't
    eMail: bbe@xxxxxxxx
    WWW  : http://www.heise.de

- Antworten:
  - AW: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe
    - From: Erich Kohlberger

- Referenzen:
  - RE: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe
    - From: Timo Sandmann
  - Re[2]: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe
    - From: Thorsten Thiele

- Voriger (Datum): Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Michail Brzitwa
- Nächster (Datum): Re: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Fabian Recktenwald
- Voriger (Thread): Re[2]: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Thorsten Thiele
- Nächster (Thread): AW: Fwd: Re[2]: [ct-bot] ct-Bot-Wettkämpfe, Erich Kohlberger
- Indizes:
  - Datum
  - Thread