Lvgl array auslesen

Hallo,
ich versuche mich gerade an der Programmierung eines LVGL Screens mit ESP32.

Ich möchte den Hue teil eines hsv Arrays auslesen.

Die Abfrage
lv_color_to_hsv(lv_obj_get_style_bg_color(ui_SoloFarbe,LV_PART_MAIN));

gibt laut lvgl.io l

v_color_hsv_t mit
Public Members: uint16_t h, uint8_t s, uint8_t v
zurück.
wenn ich versuche

static uint16_t hsv[3];
hsv = lv_color_to_hsv(lv_obj_get_style_bg_color(ui_SoloFarbe,LV_PART_MAIN));

kommt die Fehlermeldung

Compilation error: incompatible types in assignment of 'lv_color_hsv_t' to 'uint16_t [3]' {aka 'short unsigned int [3]'}

Ihr merkt, dass ich das Prinzip der Objekte wohl noch nicht so recht begriffen habe.

nur geraten.
Du brauchchst halt schon einen passenden typ auch.
Ein Array mit 3 uint16_t ist offenbar nicht.

VIELEICHT

lv_color_hsv_t hsv;
hsv=  lv_color_to_hsv(lv_obj_get_style_bg_color(ui_SoloFarbe,LV_PART_MAIN));
Serial.println(hsv.h);

gib uns einen Link auf den Source wo man das sehen kann...

hast ein l vergessen: lv_color_hsv_t hsv

Zumindest nach dem hier: lv_color.h — LVGL documentation

1 Like

@noiasca
Das war es. Vielen Dank.
Das Konzept ist für mich neu.

lv_color_hsv_t hsv;

Ich deklariere ein Array Namens hsv auf Basis des Array lv_color_hsv_t?
Ist hsv dann erst einmal leer?
Gibt es auch die Möglichkeit das "zu Fuss" zu machen also 3 Variablen definieren uint16_t und uint8_t und diese dann zum Arry zusammen fassen?
Danke

Nicht wirklich.

Arrays müssen immer Dinge gleichen Typs enthalten, Zugriff über Index. uint16_t und uint8_t sind aber verschieden.

Dinge unterschiedlichen Typs kann man in Strukturen zusammenfassen und lv_color_hsv_t ist offensichtlich eine Struktur aus diesen drei Teilen. Zugriff über Namen der Variable, einem Punkt und Name des Elements (hsv.h, hsv.s und hsv.v).

Super Danke, dann werde ich mich mit der Strukturen beschäftigen. Danke an alle die mir geantwortet haben. Ich liebe dieses Forum.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.