Array Initialisierung und Itertation

OP (Firma: Flk Consulting UG) #5104582
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
Angehängte Dateien:
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.
OP (Firma: Flk Consulting UG)
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.