ATNEL tech-forum
https://forum.atnel.pl/

MENU na LCD: kod + tutorial
https://forum.atnel.pl/topic20264.html
Strona 1 z 1

Autor:  Lagun_25 [ 20 lut 2018, o 19:11 ]
Tytuł:  MENU na LCD: kod + tutorial

Cześć wszystkim ;)

Chciałem przedstawić moją implementację menu na lcd. Działanie można zobaczyć na filmie:



Link do plików źródłowych: https://github.com/embeddeddevpl/blog_r ... %232/STM32

Cały projekt napisany jest pod STM32 i wyświetlacz ze sterownikiem HD44780, ale implementacja samego menu jest odseparowana od rodzaju mikrokontrolera. W przypadku gdyby chciało się wykorzystać inny wyświetlacz to jednak wprowadzenie drobnych modyfikacji byłoby konieczne. Nie jest to taki kawał dobrej roboty jak biblioteka i generator Pana Mirka ;) Jak to pisałem to jeszcze takich cudów nie było :)

No ale gdyby ktoś chciał się z tym grzebać to może się przyda - w razie czego, napisałem też tutorial, gdzie tłumaczę całą implementację i wykorzystane mechanizmy: http://www.embeddeddev.pl/menu-na-lcd-wprowadzenie/
Wydaje mi się, że są tam opisane całkiem ciekawe zagadnienia, które niektórym mogą pomóc podszlifować programistyczne skillsy ;) Wszelki feedback mile widziany. Pozdrawiam :)

Autor:  Szofer [ 2 kwi 2018, o 21:52 ]
Tytuł:  Re: MENU na LCD: kod + tutorial

cześć.

nie rozumiem tego zapisu

if (currentPointer->parent) temp = (currentPointer->parent)->child;
else temp = &menu1;

czy? (currentPointer->parent) wskazuje teraz na -> child i temp przyjmuje parametr tylko z child,
czy? (currentPointer->parent)->child te dwa parametry sa przyjmowane przez temp,
?

Autor:  Lagun_25 [ 4 kwi 2018, o 17:01 ]
Tytuł:  Re: MENU na LCD: kod + tutorial

Cześć. Zmienna temp nie może przechowywać adresu kilku elementów menu. Przechowuje adres tylko jednego elementu i w tym wypadku jest to pierwszy element na danym poziomie menu. Nie możemy się do niego odwołać bezpośrednio jak w przypadku &menu1, więc trzeba w ten sposób: ((currentPointer->parent)->child). I teraz po kolei:
1. currentPointer przechowuje adres do jakiegoś elementu menu.
2. Ten element może mieć swoje dzieci, rodziców, itd. Poprzez zapis (currentPointer->parent) odwołujemy się już do zupełnie innego elementu menu - w tym wypadku rodzica aktualnego elementu.
3. Ten element także może mieć swoich rodziców, dzieci, itd. W tym wypadku odwołujemy się do jego dziecka: (currentPointer->parent)->child.
Jeszcze dla lepszego zobrazowania można to zapisać na dwóch zmiennych:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  Szofer [ 4 kwi 2018, o 18:12 ]
Tytuł:  Re: MENU na LCD: kod + tutorial

Brałem przyklad z twojego menu,
Tabkica menu1 lub inne gdzie tam parent jest null czyli zero czyli w ifa nie wejdzie i wykona sie else temp = &menu1, chodzi mi o sytuacje kiedy sie wykona if.

Chyba że źle to rozumiem

Autor:  Lagun_25 [ 4 kwi 2018, o 19:28 ]
Tytuł:  Re: MENU na LCD: kod + tutorial

If wykona się wtedy gdy będziesz na poziomie jakiegoś podmenu, a nie w menu głównym. Wtedy currentPointer będzie miał rodzica i warunek będzie spełniony. Np. rodzicem sub_menu1_1 jest menu1, a nie NULL:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/