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: Carsten Giesen
Datum: Di, 21.03.2006 19:59:16
Hallo Zusammen,
Ich habe einen Patch eingereicht, mit dem man die Zifferntasten mehrfach
nutzen kann.
Herr Benz bat nun darum das bevor er aufgenommen wird, dieses hier zu
diskutieren.
Meine Idee, ist abhängig vom Screen den Tsten unterschiedliche Funktionen
geben zu können.
Bei Screen 1 (Standard) verhalten sich die Tsten auch wie bis her.
In einem Screen, der z.B. Funktionen heißen könnte, könnte ich hier nun
verschiedene Verhalten auswählen.
Oder ich könnte Sensoren kalibrieren.
Aufgerufen wird die Funktion dann so (fast wie gehabt):
{ RC5_CODE_1, rc5_number, { 1,
1 } },
{ RC5_CODE_2, rc5_number, { 2,
2 } },
{ RC5_CODE_3, rc5_number, { 3,
3 } },
{ RC5_CODE_4, rc5_number, { 4,
4 } },
{ RC5_CODE_5, rc5_number, { 5,
5 } },
{ RC5_CODE_6, rc5_number, { 6,
6 } },
{ RC5_CODE_7, rc5_number, { 7,
7 } },
{ RC5_CODE_8, rc5_number, { 8,
8 } },
{ RC5_CODE_9, rc5_number, { 9,
9 } },
{ RC5_CODE_0, rc5_number, { 0,
0 } },
Der Kern ist folgende Routine:
/*!
* Verarbeitet die Zifferntasten in Abhängigkeit vom eingestelltem Screen
*/
void rc5_number(RemCtrlFuncPar *par) {
switch (display_screen) {
case 0:
switch (par->value1) {
case 0: break;
case 1: target_speed_l = BOT_SPEED_SLOW;
target_speed_r = BOT_SPEED_SLOW; break;
case 2: bot_goto(100, 100, 0); break;
case 3: target_speed_l = BOT_SPEED_MAX;
target_speed_r = BOT_SPEED_MAX; break;
case 4: bot_goto(-20, 20, 0); break;
case 5: bot_goto(0, 0, 0); break;
case 6: bot_goto(20, -20, 0); break;
case 7: bot_goto(-40, 40, 0); break;
case 8: bot_goto(-100, -100, 0); break;
case 9: bot_goto(40, -40, 0); break;
}
break;
}
}
Ich kann hier jetzt einfach hergehen und den ganzen case 0 kopieren und als
case (z.B.) 5 für Funktion einfügen:
case 5:
switch (par->value1) {
case 0: break; // ungenutzt
case 1: activateBehaviour(bot_drive_square);
break;
case 2:
deactivateBehaviour(bot_goto_behaviour); break;
case 3:
activateBehaviour(bot_olympic_behaviour); break;
case 4:
deactivateBehaviour(bot_olympic_behaviour); break;
case 5: break;
case 6: break;
case 7: break;
case 8: break;
case 9: break;
}
break;
Was mein ihr dazu?
Cu
Carsten