Forum: Compiler & IDEs Array Initialisierung und Itertation


von Frank L. (Firma: Flk Consulting UG) (flk)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich hänge gerade wahrscheinlich an einem Anfängerfehler sehe aber den 
Wald vor lauter Bäumen nicht mehr.

Ich initialisiere ein Array mit 10 Elementen vom Type
1
typedef struct _fb_irmpdata
2
{
3
  uint8_t key;
4
  IRMP_DATA irmp_data;
5
} FB_IRMP_DATA;
1
FB_IRMP_DATA irmpdata[MAXCODES] =  {
2
  { KEY1,     {0x00,0x00,0x00,0x00} },
3
  { KEY2,     {0x00,0x00,0x00,0x00} },
4
  { KEY3,     {0x00,0x00,0x00,0x00} },
5
  { KEY4,     {0x00,0x00,0x00,0x00} },
6
  { KEYUP,    {0x0B,0x64,0x0A,0x00} },
7
  { KEYDOWN,  {0x0B,0x64,0x0C,0x00} },
8
  { KEYLEFT,  {0x0B,0x64,0x5C,0x00} },
9
  { KEYRIGHT, {0x0B,0x64,0x3E,0x00} },
10
  { KEYMENU,  {0x0B,0x64,0x23,0x00} },
11
  { KEYMUTE,  {0x0B,0x64,0x37,0x00} },
12
                  };

Mit der Funktion
1
uint8_t findKeyInStorage(IRMP_DATA *data)
2
{
3
  for(uint8_t i=0; i < MAXCODES; i++)
4
  {
5
    if(data->address == irmpdata[i].irmp_data.address &&
6
       data->command == irmpdata[i].irmp_data.command &&
7
       data->protocol == irmpdata[i].irmp_data.protocol)
8
    {
9
      return irmpdata[i].key;
10
    }
11
  }
12
  return KEYUNDEFINED;
13
}

suche ich jetzt den Key für den IR Code.

Zu Debug-Zwecken lasse ich mir den IR Code und den gefundenen Key auf 
einem LCD ausgeben. Nur für KEYUP und KEYDOWN bekomme ich den richtigen 
Wert für Key geliefert, obwohl definitiv die richtigen Werte für alle 
Tasten im Array stehen.

Wo liegt mein Denkfehler :-(

Gruß
Frank

: Bearbeitet durch User
von Stefan E. (sternst)


Lesenswert?

1
    currentKey = findKeyInStorage(&irmpdata);
Wieso übergibst du einen Pointer auf die Tabelle? findKeyInStorage 
erwartet doch einen Pointer auf einen zu suchenden Datensatz. Compiliert 
das so überhaupt? Schließlich ist FB_IRMP_DATA != IRMP_DATA.

von Frank L. (Firma: Flk Consulting UG) (flk)


Lesenswert?

Hallo Stefan,

irmpdata ist eine lokale Variable in der Funktion User_handle_keys und 
nicht das Array mit dem gleichen Namen.

Die Bezeichnung ist etwas unglücklich gewählt, aber der Scope lokale 
Variable funktioniert. Ich habe sie trotzdem mal umbenannt.

Gruß
Frank

von Frank L. (Firma: Flk Consulting UG) (flk)


Lesenswert?

So Fehler gefunden, wie immer saß der DAU vor dem Monitor :-).

Zwei falsche Codes hinterlegt und immer die falsche Datei geflasht.

Gruß
Frank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.