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: |
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: |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |