## c't-Projekte - Mailinglisten

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

### [ct-bot] Ziffern Tasten mehrfach nutzen

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

- Antworten:
  - RE: [ct-bot] Ziffern Tasten mehrfach nutzen
    - From: Timo Sandmann

- Voriger (Datum): Re: [ct-bot] Patch eingespielt in c't-Sim, Peter König
- Nächster (Datum): RE: [ct-bot] Ziffern Tasten mehrfach nutzen, Timo Sandmann
- Voriger (Thread): Re: [ct-bot] Zu weite Kurven in bot_drive(), Torsten Evers
- Nächster (Thread): RE: [ct-bot] Ziffern Tasten mehrfach nutzen, Timo Sandmann
- Indizes:
  - Datum
  - Thread