GUIX Studio: mikrokontrolery Renesas Synergy w aplikacjach graficznych [2]
Konfiguracja obiektu Prompt ekranu Window 1 została pokazana na rysunku 47 i 48. Obiekt instructions ma wykonywać akcję po przyciśnięciu i dlatego ma zaznaczona opcję Enable. Obiekt Window 1 text zmienia tylko napis przez siebie wyświetlany i nie ma zaznaczonej opcji Enable. Analogicznie wykonujemy konfigurację elementów Prompt umieszczonych w oknie window2 – rysunki 49 i 50.
Po umieszczeniu wszystkich elementów graficznych i ich skonfigurowaniu aplikacja GUIX Studio wygeneruje 4 pliki: guiapp_resources.c, guiapp_resources.h, guispp_specificiations.c i guispp_specificiations.h i umieści je w folderze gui. Żeby to się stało trzeba z menu Project uruchomić Generate All Output Files – rysunek 51.
W plikach wygenerowanych przez GUIX Studio są umieszczone definicje elementów graficznych oraz funkcje ich rysownia na ekranie.
Ostatni etap, to napisanie funkcji, która reaguje na zdarzenia pochodzące z obsługi interfejsu dotykowego. Każdy element graficzny może zgłaszać zdarzenie po przyciśnięciu obszaru ekranu, na którym ten element jest umieszczony. Taką funkcję można napisać samodzielnie, ale wymaga to sporej wiedzy i żmudnego wczytywania się w dokumentację użytych elementów biblioteki SSP. Dużo łatwiej jest posiłkować się gotowym rozwiązaniem, które potem będzie można adaptować do własnych celów. Firma Renesas umieściła w nocie aplikacyjnej R12AB0021EU0100 gotowy plik guiapp_event_handlers.c. Na listingach 2 i 3 pokazano procedury dla obsługi ekranów 1 i 2.
List. 2. Obsługa zdarzeń dla ekranu 1
UINT window1_handler(GX_WINDOW *widget, GX_EVENT *event_ptr)
{
UINT result = gx_window_event_process(widget, event_ptr);
switch (event_ptr->gx_event_type)
{
case GX_SIGNAL(ID_BUTTONENABLER, GX_EVENT_TOGGLE_ON):
button_enabled = true;
update_text_id(widget->gx_widget_parent, ID_WINDOWCHANGER, GX_STRING_ID_BUTTON_ENABLED);
update_text_id(widget->gx_widget_parent, ID_INSTRUCTIONS, GX_STRING_ID_INSTRUCT_BUTTON);
break;
case GX_SIGNAL(ID_BUTTONENABLER, GX_EVENT_TOGGLE_OFF):
button_enabled = false;
update_text_id(widget->gx_widget_parent, ID_WINDOWCHANGER, GX_STRING_ID_BUTTON_DISABLED);
update_text_id(widget->gx_widget_parent, ID_INSTRUCTIONS, GX_STRING_ID_INSTRUCT_CHECKBOX);
break;
case GX_SIGNAL(ID_WINDOWCHANGER, GX_EVENT_CLICKED):
if(button_enabled){
show_window((GX_WINDOW*)&window2, (GX_WIDGET*)widget, true);
}
break;
default:
gx_window_event_process(widget, event_ptr);
break;
}
return result;
}
List. 3. Obsługa zdarzeń dla ekranu windows 2
UINT window2_handler(GX_WINDOW *widget, GX_EVENT *event_ptr)
{
UINT result = gx_window_event_process(widget, event_ptr);
switch (event_ptr->gx_event_type){
case GX_EVENT_PEN_UP:
show_window((GX_WINDOW*)&window1, (GX_WIDGET*)widget, true);
break;
default:
result = gx_window_event_process(widget, event_ptr);
break;
}
return result;
}
static UINT show_window(GX_WINDOW * p_new, GX_WIDGET * p_widget, bool detach_old)
{
UINT err = GX_SUCCESS;
if (!p_new->gx_widget_parent)
{
err = gx_widget_attach(p_window_root, p_new);
}
else
{
err = gx_widget_show(p_new);
}
gx_system_focus_claim(p_new);
GX_WIDGET * p_old = p_widget;
if (p_old && detach_old)
{
if (p_old != (GX_WIDGET*)p_new)
{
gx_widget_detach(p_old);
}
}
return err;
}






Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



