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 14 mar 2025, o 15:22


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 2 wrz 2013, o 17:29 
    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

    To zmień to pole na wskaźnik.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2013, o 17:52 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27363
    Lokalizacja: Szczecin
    Pomógł: 1043

    Krauser napisał(a):
    To zmień to pole na wskaźnik.


    Dokładnie czyli potraktuj tak samo jak callbacki swoje ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2013, o 17:55 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27363
    Lokalizacja: Szczecin
    Pomógł: 1043

    siedzi sobie na zewnątrz zmienna timer - wystawiona do konfiguracji, a przy inicjalizacji programu wpisujesz do wskaźnika jej adres no i masz

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2013, o 18:31 
    Offline
    Użytkownik

    Dołączył(a): 16 maja 2012
    Posty: 349
    Lokalizacja: Legnica
    Zbananowany użytkownik

    Pomógł: 23

    mirekk36 napisał(a):
    siedzi sobie na zewnątrz zmienna timer - wystawiona do konfiguracji, a przy inicjalizacji programu wpisujesz do wskaźnika jej adres no i masz

    Ja również nie za bardzo kumam.
    Jest zdefiniowana tablica key zawierająca elementy typu TKEY czyli każdy element tej tablicy to struktura zawierająca między innymi pole delay_timer a to znaczy że różnych wartości delay_timer może być tyle ile jest elementów tablicy key. Żeby zamienić delay_timer na wskaźnik należałoby zdefiniować tablicę takich timerów o rozmiarze zgodnym z rozmiarem tablicy key i do każdego wskaźnika wewnątrz struktury przypisywać wskazanie na kolejne elementy tablicy zdefiniowanej w module głównym. Jeżeli natomiast każda ze struktur miałaby przechowywać wskaźnik do zmiennej zdefiniowanej w module główny ( jednej zmiennej nie tablicy) to znaczy że to pole nie jest potrzebne w strukturze bo każdy element tej tablicy przechowuje ten sam adres.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2013, o 19:23 
    Offline
    Użytkownik

    Dołączył(a): 16 maja 2012
    Posty: 349
    Lokalizacja: Legnica
    Zbananowany użytkownik

    Pomógł: 23

    Jeżeli tak to OK. Tylko jak osobne timery to jak to zgrabnie zrobić w inicie. Tablica timerów brzmi rozsądnie, tylko moduł główny musi wiedzieć ile jest elementów tablicy key żeby po nich pozamiatać przy inicjalizacji.

    ------------------------ [ Dodano po: 1 minucie ]

    Tylko czy wtedy nie lepiej zdefiniować taką tablicę timerów w keys.c i jako extern a wywalić ze struktury niepotrzebne wskazanie na delay_timer? Zamiast odwoływać się do pola struktury to do elementu tablicy deklarowanej w keys.c i inicjowanej w module głównym.

    ------------------------ [ Dodano po: 6 minutach ]

    No chyba że liczba różnych timerów jest inna niż rozmiar tablicy key. To wtedy nie będzie 1 do 1 w celach oszczędności pamięci.

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2013, o 20:12 
    Offline
    Użytkownik

    Dołączył(a): 16 maja 2012
    Posty: 349
    Lokalizacja: Legnica
    Zbananowany użytkownik

    Pomógł: 23

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


    w main.c ustawić tablicę jak pisałeś a w dalszej części biblioteki zamiast odwoływać się przez adres zapisany w strukturze to bezpośrednio do timera przez indeks tablicy. Jaki zysk jest w przechowywaniu dodatkowo wskaźnika w strukturze?

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 wrz 2013, o 21:29 
    Offline
    Użytkownik

    Dołączył(a): 16 maja 2012
    Posty: 349
    Lokalizacja: Legnica
    Zbananowany użytkownik

    Pomógł: 23

    Użytkownik będzie musiał znać/ustawić oprócz stałej dosłownej NUMBER_OF_KEYS w keys.h również znać typ zmiennej stablicowanej w buforze timerów. Jakąś informację będzie musiał dostać. Broń boże nie krytykuję rozwiązania tylko dzielę się spostrzeżeniem. Łatwiej jest pokazać userowi zmienne i funkcje typu extern w pliku nagłówkowym niż opisywać (pytanie gdzie), że ma wolność nazywania jakiejś tablicy ale elementów o określonym typie i jeszcze okupionym kosztem pamięci. Na pewno zadziała ale dla mnie jako usera byłoby to niewygodne w użyciu. Rozumiem strategię i potrzebę hermetyzacji bibliotek, ale coś na zewnątrz trzeba zawsze wystawić. Pytanie w jakiej formie, żeby było to wygodne. Twoje rozwiązanie unika wystawiania jakiegoś pola wzamian oferując metodę która ustawia zmienną wewnętrzną. Może wobec tego zastosować taki mechanizm:
    main.c
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


    oczywiście do kompletu funkcja get_key_timer() :-)

    _________________
    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: 7 ] 

    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