c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
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