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
typedefstruct_fb_irmpdata
2
{
3
uint8_tkey;
4
IRMP_DATAirmp_data;
5
}FB_IRMP_DATA;
1
FB_IRMP_DATAirmpdata[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_tfindKeyInStorage(IRMP_DATA*data)
2
{
3
for(uint8_ti=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
returnirmpdata[i].key;
10
}
11
}
12
returnKEYUNDEFINED;
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
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.
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