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 w 2025? 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 3 maja 2025, o 08:47


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 50 ]  Przejdź na stronę Poprzednia strona  1, 2
    Autor Wiadomość
    PostNapisane: 7 gru 2012, o 15:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 lis 2011
    Posty: 582
    Lokalizacja: okolice Wrocławia :)
    Pomógł: 24

    Mam nadzieję że będę mógł potestować działające Menu w ten weekend. Zapowiada się ciekawie :)

    Swoją drogą ciekawe jak długo powisi Twoje zapytanie o nie działające menu na wiadomym portalu ;)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 gru 2012, o 15:49 

    Pomógł: 0

    No już tam zablokowałem temat i dałem odnośnik z rozwiązaniem na to forum :P, a co mi tam ;). tam nie będę publikować naprawionej wersji.

    Właśnie rzeźbię menu do mojego "sterownika" jak córka pozwoli tj. nie będzie za bardzo absorbująca to powinienem samo menu ogarnąć dzisiaj, potem zostaje napisanie poszczególnych procedur, ale to już w tym temacie
    topic1767.html będę publikować.



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 gru 2012, o 13:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 233
    Lokalizacja: Gdynia
    Pomógł: 15

    Od kilku dni wałkuję temat menu wielopoziomowego i chciałbym się podzielić swoimi "przemyśleniami". Jako podstawę wykorzystałem przykłady z linku podawanego przeze mnie wcześniej w tym wątku i na stronie http://stsystem.elektroda.eu/programowanie/avr/100-multimenu. Zmieniłem trochę funkcję odpowiedzialną za zmianę i wyświetlanie menu. Dodałem dodatkową zmienną przekazywaną przez tą funkcję, która określa czy nastąpiła zmiana pozycji menu co ułatwia życie oraz zdefiniowałem długość wyświetlanego menu na wyświetlaczu. Pozwala to na wyświetlanie np 3 linii menu na wyświetlaczu z 4 liniami.

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


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


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


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


    I plik main z automatycznym wyjściem z menu przy określonej bezczynności. Pętla główna obsługuje wielowątkowość.

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


    ------------------------ [ Dodano po: kilkunastu sekundach ]

    A tak to działa:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 gru 2012, o 13:17 

    Pomógł: 0

    No i fajnie nam się wątek rozwija. Musze przetrawić co mi kolega Krauser rzucił :) w tym temacie topic1767-30.html



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 09:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 cze 2012
    Posty: 102
    Pomógł: 2

    rezasurmar napisał(a):
    No już tam zablokowałem temat i dałem odnośnik z rozwiązaniem na to forum :P, a co mi tam ;). tam nie będę publikować naprawionej wersji.

    Właśnie rzeźbię menu do mojego "sterownika" jak córka pozwoli tj. nie będzie za bardzo absorbująca to powinienem samo menu ogarnąć dzisiaj, potem zostaje napisanie poszczególnych procedur, ale to już w tym temacie
    topic1767.html będę publikować.



    Szukałem na elektrodzie. Szukałem i szukałem. I w końcu znalazłem! W koszu...
    no comment

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 09:59 

    Pomógł: 0

    No bo mod wywalił mi informację gdzie i kto znalazł rozwiązanie problemu, więc niech się za przeproszeniem gonią. Sprawa się oparła o sysopa czyli gulsona, więc powiedziałem, że skoro nie chcą rozwiązania niech posta wywalą do kosza!, a nie, że mod mi będzie mówił gdzie i co mam publikować!



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 10:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lis 2011
    Posty: 534
    Lokalizacja: Mierzyn
    Pomógł: 9

    rezasurmar napisał(a):
    No bo mod wywalił mi informację gdzie i kto znalazł rozwiązanie problemu, więc niech się za przeproszeniem gonią. Sprawa się oparła o sysopa czyli gulsona, więc powiedziałem, że skoro nie chcą rozwiązania niech posta wywalą do kosza!, a nie, że mod mi będzie mówił gdzie i co mam publikować!


    sobie jaja robia ?? Masakra ...

    _________________
    pozdrawiam
    Jachu



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 10:10 

    Pomógł: 0

    Dokładnie, banda, rozumiem, jak bym ofen dał linka do forum atnel. No to mogę zrozumieć.
    Sam podałem tylko informację, że kolega Krauser z forum atnel znalazł rozwiązanie i tyle w tej kwestii, a mod od razu wywalił, na czerwono i, że bez zgody podmiotu bla bla bla ;).

    Do dupy takie forum, gdzie nawet nie można wspomnieć o reszcie świata.



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 10:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 lis 2011
    Posty: 582
    Lokalizacja: okolice Wrocławia :)
    Pomógł: 24

    rezasurmar napisał(a):
    Do dupy takie forum, gdzie nawet nie można wspomnieć o reszcie świata.


    Jak w Chinach normalnie :lol: :lol: :lol:

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 gru 2012, o 10:41 

    Pomógł: 0

    Dokładnie, jak by mi kto w twarz napluł, a najgorsze w tym wszystkim jest to, że ten chamski moderator, miał czelność mieć mi za złe i napisać to w zablokowanym usuniętym temacie, gdzie ja już nie miałem możliwości odniesienia się do jego słów, normalnie jak za komuny, dostałeś pałą od zomo i miałeś siedzieć cicho.



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2013, o 08:29 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 17 lut 2013
    Posty: 6
    Lokalizacja: Piła
    Pomógł: 1

    Na początek witam wszystkich forumowiczów :)

    Tak czytam i czytam kod menu użytkownika nixie, niby wiem jak działa ale jednak nie do końca :D
    Jeśli dobrze rozumiem, to dzięki wskaźnikowi callback, a dokładniej jego zmiennej event wykona się funkcja, która znajduje się w wybranym podmenu np( set_clock). Jeśli event=null wskaźnik jest przeźroczysty. Ale tutaj pojawia się dalszy kod programu z wywoływaną funkcją:

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


    Tutaj mam zgrzyt :P

    if(inout == in)
    if(inout == current)
    switch(event)
    case E_Next:
    case E_Click:

    1)Dlaczego zmienna inout jest porównywana z in czy też current ?? skąd wiadomo że przyjmie wartość 1 albo 2 ??
    2) skąd wiadomo, że event przyjmie wartość E_Next czy też E_Click ??
    Głowię się nad tym i jakoś nie mogę wykminić.. Może po prostu nie widzę w którym miejscu są przypisywane podane wartości do tych zmiennych. Proszę o w miarę proste wyjaśnienie :) Jestem początkujący, co pewnie idzie wywnioskować z moich pytań :P :P
    Pozdrawiam :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2013, o 08:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 233
    Lokalizacja: Gdynia
    Pomógł: 15

    Michal21 napisał(a):

    if(inout == in)
    if(inout == current)
    switch(event)
    case E_Next:
    case E_Click:

    1)Dlaczego zmienna inout jest porównywana z in czy też current ?? skąd wiadomo że przyjmie wartość 1 albo 2 ??




    Przy przejściu do nowej pozycji menu (jej zmianie) funkcja zwrotna jest wywoływana z dodatkowym argumentem mającym wartość 'in', natomiast gdy wywoływane zdarzenia w danej pozycji menu nie zmienia jej to ta wartość przyjmuje 'current'. Np gdy zmieniasz wartość zegara to pozycja menu nie zmienia się. Odpowiedzialną za przekazanie tego argumentu jest funkcja change_manu().

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

    Michal21 napisał(a):
    2) skąd wiadomo, że event przyjmie wartość E_Next czy też E_Click ??

    Pozdrawiam :)


    O to już musisz sam zadbać generując takie zdarzenie np po wciśnięciu klawisza lub odebraniu komendy IR.

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2013, o 04:45 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 17 lut 2013
    Posty: 6
    Lokalizacja: Piła
    Pomógł: 1

    Czyli za pomocą funkcji memcpy_P odczytujemy znacznik callback i jeśli w danym menu znajduje się jakaś funkcja np. set_clock, to zmienną event i inouth wpisujemy do wskaźnika *call za pomocą komendy pobrania adresu &call. W miedzy czasie dzięki callbeckowi wywołujemy funkcję set_clock. Następnie sprawdzamy czy mamy tą samą pozycje menu. Jeśli tak, to nadpisujemy zmienną event wartością menu_event, a zmienną inoutch wartością current, jeśli nie, to nadpisujemy wartościami (menu_event, in)

    Natomiast w funkcji set_clock cały czas sprawdzamy wartość zmiennych event-(menu_event) i inout-(current,in). Jeśli nie zmienimy pozycji menu, switch(event) zaczyna sprawdzać który przycisk naciśniemy. Domyślnie jest E_IDDLE czyli 0

    Wiem, że męczę :P ale chciałbym mieć pewność, że dobrze to rozumiem :) Może takie dokładne wytłumaczenie przyda się nie tylko mi :)

    Co to za warunek ?? co On sprawdza ?? :

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


    Czy mógłbyś wrzucić cały plik ?? staram się i nie mogę uruchomić menu z tego co wkleiłeś. Błędów nie mam a menu nie chodzi...

    edit
    Dobra, wszystko działa :) Dla takich zielonych osób jak ja( s1_lcnt jest to przerwanie ). Teraz muszę jeszcze przerobić menu pod siebie :) Dlatego nadal proszę o poprawnie mnie jeśli źle rozumiem działanie.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 paź 2013, o 18:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 13 cze 2012
    Posty: 76
    Lokalizacja: Węgorzewo
    Pomógł: 1

    Próbuję uruchomić menu rezusmara na wyświetlaczu 4x20. Z tego co rozumiem z kodu, układ menu powinien się dostosować do ustawień wyświetlacza w pliku lcd44780.h . Niestety, działa poprawnie tylko dla wyświetlacza 16 znakowego. Przy ustawieniu 20 znaków mam taki efekt:

    Obrazek

    oprocz tego, kompilator wywala warrningi "passing argument 1 of 'lcd_str_P' discards qualifiers from pointer target type" w pliku menu.c :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 paź 2013, o 19:16 
    Offline
    Uzytkownik zasłużony dla forum.atnel.pl
    Avatar użytkownika

    Dołączył(a): 16 lip 2012
    Posty: 2088
    Lokalizacja: Leżajsk / Kraków
    Pomógł: 411

    W tym wątku wspominał kolega elkuba, że z adresacją mogą być niespodzianki. Proponuje taki kod w odpowiednim miejscu:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 paź 2013, o 19:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 13 cze 2012
    Posty: 76
    Lokalizacja: Węgorzewo
    Pomógł: 1

    Anty, dzięki, już się bezbłędnie kompiluje.

    Krauser....chylę czoła :!:



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 paź 2013, o 19:41 

    Pomógł: 0

    No ja miałem dokładnie ten sam problem na swoim 4x16.



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 lis 2013, o 18:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 lip 2013
    Posty: 143
    Pomógł: 1

    Jestem w trakcie uruchamiania menu rezusmara przy wykorzystaniu enkodera. Niby wszystko jest ok i działa jak należy jednak bezczelny kompilator podkreśla mi wszystkie linie w których wykorzystane jest makro GET_ADDR jako błąd składni :roll: . Oto definicja makra:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    Zaznaczam że w plikach związanych z menu póki co nic nie zmieniałem. W konsoli nie ma żadnego warn'a... może ktoś już walczył z tym problemem ?


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lis 2013, o 15:36 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 lip 2013
    Posty: 143
    Pomógł: 1

    Jak dla mnie to wygląda na całkiem poprawną kompilację :(
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
      Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 lis 2013, o 16:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 lip 2013
    Posty: 143
    Pomógł: 1

    no już w pierwszym poście wspomniałem że program działa i się kompiluje :), chodzi o to że to makro jest wykorzystywane bardzo często i to podkreślanie jest "ściśle irytujące", może ktoś zna sposób na dodanie wyjątku w eclipse ?

    _________________
    sig off ;(



    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: 50 ]  Przejdź na stronę Poprzednia strona  1, 2

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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