Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 16 cze 2025, o 20:31


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 20 lut 2018, o 19:11 
    Offline
    Użytkownik

    Dołączył(a): 28 cze 2014
    Posty: 37
    Lokalizacja: Gdańsk
    Pomógł: 0

    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 :)

    _________________
    Zapraszam na bloga: http://www.embeddeddev.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 21:52 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    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,
    ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 kwi 2018, o 17:01 
    Offline
    Użytkownik

    Dołączył(a): 28 cze 2014
    Posty: 37
    Lokalizacja: Gdańsk
    Pomógł: 0

    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.

    _________________
    Zapraszam na bloga: http://www.embeddeddev.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 kwi 2018, o 18:12 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 kwi 2018, o 19:28 
    Offline
    Użytkownik

    Dołączył(a): 28 cze 2014
    Posty: 37
    Lokalizacja: Gdańsk
    Pomógł: 0

    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.

    _________________
    Zapraszam na bloga: http://www.embeddeddev.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO