ich habe schon einige Kolleg_innen im IRC gefragt, leider ließ sich ein Problem bei der Um- und Neubelegung einiger Tasten auf meiner Fernbedienung nicht lösen.
Ich arbeite mit dem Code ct-Bot 1978.
Zur Steuerung meines Bots habe ich eine Fernbedienung, die eigentlich im Code bereits vorhanden ist: Technisat_TTS35AI. Auf der physischen Fernbedienungstastatur findet sich ein Steuerkkreuz (oben, unten, rechts, links, OK in der Mitte), das ich gerne für vorwärts, rückwärts, rechts drehen, links drehen und stopp verwenden möchte.
Deaktiviere ich im Code die Standard-FB HQ_RC_UNIVERS29_334 und aktiviere ich dafür die Technisat_TTS35AI spuckt Eclipse gleich eine ganze Reihe an Fehlern aus:
Da die Standard-FB soweit funktioniert, gehe ich also zurück auf default (HQ_RC_UNIVERS29_334) und versuche nur die Tasten neu- bzw. umzulegen, die ich gerne haben möchte.Description Resource Path Location Type
‘RC5_CODE_DOT’ undeclared (first use in this function) gui.c /ct-Bot/ui line 201 C/C++ Problem
‘RC5_CODE_PLAY’ undeclared (first use in this function) gui.c /ct-Bot/ui line 208 C/C++ Problem
‘RC5_CODE_STOP’ undeclared (first use in this function) gui.c /ct-Bot/ui line 204 C/C++ Problem
make: *** [ui/gui.o] Error 1 ct-Bot C/C++ Problem
make: *** Waiting for unfinished jobs.... ct-Bot C/C++ Problem
recipe for target 'ui/gui.o' failed subdir.mk /ct-Bot/Debug-MCU-m1284p/ui line 24 C/C++ Problem
each undeclared identifier is reported only once for each function it appears in gui.c /ct-Bot/ui line 201 C/C++ Problem
Ich beginne mit der OK-Taste (laut meinem Bot-Display hat diesen den Wert 0017), füge also in Eclipse -> Project-Explorer -> ct-Bot -> include -> rc5-codes.h im Abschnitt * HQ RC Univers 29, Geraetecode 334 eine Zeile
Code: Alles auswählen
#define RC5_CODE_OK (0x0017 & RC5_MASK) /*!< Taste OK */
Code: Alles auswählen
/*!
* Default-Fernbedienung
* HQ RC Univers 29, Geraetecode 334
*/
#ifdef RC_HAVE_HQ_RC_UNIVERS29_334
#define RC5_CODE_PWR (0x118C & RC5_MASK) /*!< Taste An/Aus */
#define RC5_CODE_0 (0x1180 & RC5_MASK) /*!< Taste 0 / 10 */
#define RC5_CODE_1 (0x1181 & RC5_MASK) /*!< Taste 1 */
#define RC5_CODE_2 (0x1182 & RC5_MASK) /*!< Taste 2 */
#define RC5_CODE_3 (0x1183 & RC5_MASK) /*!< Taste 3 */
#define RC5_CODE_4 (0x1184 & RC5_MASK) /*!< Taste 4 */
#define RC5_CODE_5 (0x1185 & RC5_MASK) /*!< Taste 5 */
#define RC5_CODE_6 (0x1186 & RC5_MASK) /*!< Taste 6 */
#define RC5_CODE_7 (0x1187 & RC5_MASK) /*!< Taste 7 */
#define RC5_CODE_8 (0x1188 & RC5_MASK) /*!< Taste 8 */
#define RC5_CODE_9 (0x1189 & RC5_MASK) /*!< Taste 9 */
#define RC5_CODE_11 (0x118A & RC5_MASK) /*!< Taste 11 / 1- */
#define RC5_CODE_12 (0x11A3 & RC5_MASK) /*!< Taste 12 / 2- */
#define RC5_CODE_GREEN (0x01BA & RC5_MASK) /*!< Gruene Taste */
#define RC5_CODE_RED (0x01BD & RC5_MASK) /*!< Rote Taste */
#define RC5_CODE_YELLOW (0x01B1 & RC5_MASK) /*!< Gelbe Taste */
#define RC5_CODE_BLUE (0x01B0 & RC5_MASK) /*!< Blaue Taste */
#define RC5_CODE_I_II (0x11AB & RC5_MASK) /*!< I/II-Taste */
#define RC5_CODE_TV_VCR (0x11B8 & RC5_MASK) /*!< TV/VCR-Taste */
#define RC5_CODE_DOT (0x11B7 & RC5_MASK) /*!< Taste mit rundem Punkt */
#define RC5_CODE_PLAY (0x11B5 & RC5_MASK) /*!< PLAY-Taste */
#define RC5_CODE_STILL (0x11A9 & RC5_MASK) /*!< Pause Taste */
#define RC5_CODE_STOP (0x11B6 & RC5_MASK) /*!< Stopp Taste */
#define RC5_CODE_BWD (0x11B2 & RC5_MASK) /*!< Backward Taste */
#define RC5_CODE_FWD (0x11B4 & RC5_MASK) /*!< Forward Taste */
#define RC5_CODE_CH_PC (0x11BF & RC5_MASK) /*!< CH*P/C Taste */
#define RC5_CODE_MUTE (0x01BF & RC5_MASK) /*!< Mute-Taste */
#define RC5_VOL_PLUS (0x1190 & RC5_MASK) /*!< Vol + Taste */
#define RC5_VOL_MINUS (0x1191 & RC5_MASK) /*!< Vol - Taste */
#define RC5_CH_PLUS (0x11A0 & RC5_MASK) /*!< Ch + Taste */
#define RC5_CH_MINUS (0x11A1 & RC5_MASK) /*!< Ch - Taste */
#define RC5_CODE_UP RC5_CODE_STILL /*!< Taste Hoch */
#define RC5_CODE_DOWN RC5_CODE_STOP /*!< Taste Runter */
#define RC5_CODE_LEFT RC5_CODE_BWD /*!< Taste Links */
#define RC5_CODE_RIGHT RC5_CODE_FWD /*!< Taste Rechts */
#define RC5_CODE_OK (0x0017 & RC5_MASK) /*!< Taste OK */
#endif // RC_HAVE_HQ_RC_UNIVERS29_334
Code: Alles auswählen
case RC5_CODE_PWR: rc5_emergency_stop(); break;
Code: Alles auswählen
case RC5_CODE_OK: rc5_emergency_stop(); break;
Jetzt wechsele ich zurück nach rc5-codes.h und ändere Schrittweise die Belegung von
Code: Alles auswählen
#define RC5_CODE_UP RC5_CODE_STILL /*!< Taste Hoch */
#define RC5_CODE_DOWN RC5_CODE_STOP /*!< Taste Runter */
#define RC5_CODE_LEFT RC5_CODE_BWD /*!< Taste Links */
#define RC5_CODE_RIGHT RC5_CODE_FWD /*!< Taste Rechts */
Code: Alles auswählen
#define RC5_CODE_UP RC5_CODE_STILL /*!< Taste Hoch */
Code: Alles auswählen
#define RC5_CODE_UP (0x1020 & RC5_MASK) /*!< Taste Hoch */
"Duplicate case value" zeigt mir in rc5.c die ZeileDescription Resource Path Location Type
duplicate case value rc5.c /ct-Bot/ui line 276 C/C++ Problem
make: *** [ui/rc5.o] Error 1 ct-Bot C/C++ Problem
make: *** Waiting for unfinished jobs.... ct-Bot C/C++ Problem
previously used here rc5.c /ct-Bot/ui line 268 C/C++ Problem
recipe for target 'ui/rc5.o' failed subdir.mk /ct-Bot/Debug-MCU-m1284p/ui line 24 C/C++ Problem
Code: Alles auswählen
case RC5_CH_PLUS: bot_servo(NULL, SERVO1, DOOR_CLOSE); break;
Code: Alles auswählen
#define RC5_CODE_STILL (0x11A9 & RC5_MASK) /*!< Pause Taste */
Was hat das also mit der Fehlermeldung zu tun, die "Duplicate case value" für
Code: Alles auswählen
case RC5_CH_PLUS: bot_servo(NULL, SERVO1, DOOR_CLOSE); break;
Code: Alles auswählen
define RC5_CH_PLUS (0x11A0 & RC5_MASK) /*!< Ch + Taste */

Danke im Voraus!
Edit: Verdeutlichungen in Formulierungen.