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 23 maja 2025, o 17:50


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
    Autor Wiadomość
    PostNapisane: 12 sty 2018, o 08:07 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Witam wszystkich.
    Zacząłem ostatnio zagłębiać się w projekt Pana Mirka odnośnie w/w tematu. Czytam dogłębnie i staram się zrozumieć mechanizmy
    w nim działające. Kompiluje się bez problemu i nawet stworzyłem jakieś własne proste iventy, które się. wykonują. Mirek pisze, że jest
    to książka i projekt dla bardziej zaawansowanych. Ja to rozumiem, ale jak się ma pod ręką GB i ATB, to aż
    korci, żeby trochę pokombinować, a więc proszę o wyrozumiałość.
    Chciałem poprosić o łopatologiczne wytłumaczenie, do czego odnoszą się zaznaczone przeze mnie wartości. Wiem, ze to pewnie
    podstawy podstaw, ale chciałbym to ogarnąć. Takie różnego rodzaju "wydłużone" makra, czy kody, gdzie jest kilka różnych argumentów
    , zmiennych.... po przecinku są dla mnie niejasne.Pozdrawiam.

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


    Chodzi mi konkretnie o np: 0,0,....,1,....,0,0,5,4,1,0 itd...

    Często spotykałem się z tego typu zapisem przy innych kodach. Jak można słownie odczytać, co robi cała linia:

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


    Napisałem tak i się wykonuje, ale te dwa zera ,0,0, dodałem na ślepo i nie wiem, czemu one mają służyć. Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2018, o 08:44 
    Offline
    Użytkownik

    Dołączył(a): 18 kwi 2013
    Posty: 181
    Lokalizacja: Kraków
    Pomógł: 30

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


    i widać, że to są współrzędne położenia warstwy na ekranie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2018, o 08:47 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    create_obj to nazwa funkcji, wszystko co jest w nawiasie za tą nazwą to argumenty, jakie są podawane do funkcji. O tym jakiego typu będą to argumenty, ile ich będzie itd. decyduje programista, piszący daną funkcje. Żeby dowiedzieć się za co odpowiada konkretny argument trzeba zerknąć na deklarację funkcji, same nazwy argumentów już powinny być pomocne :)

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

    O kolega janusz17 był szybszy i pokazał jak wygląda deklaracja funkcji create_obj :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2018, o 08:54 
    Offline
    Moderator
    Avatar użytkownika

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

    Robert_1967 napisał(a):
    Jak można słownie odczytać, co robi cała linia:

    No ale posłuchaj .... PRZEDE wszystkim znając język C - tzn podstawy , tzn to o czym pisałem w pierwszej części już Bluebooka - to nawet gdyby ktoś nie miał w ręku nigdy GB to zauważy, że:

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


    to jest funkcja napisana przez autora programu. Widzisz bowiem nazwę i dwa nawiasy okrągłe, i jeśli zakończone jest to średnikiem, i umieszczone jest w kodzie to znaczy, że ta linijka wywołuje funkcję ...

    W nawiasach okrągłych masz argumenty przekazywane do funkcji ... i teraz pytasz co one oznaczają, albo te dwa zera które tam dawałeś.

    No jak myślisz ? że ja nie opisałem w książce pokazując ten kod - do czego jest ta funkcja i jak ona działa ? że nie opisałem jakie argumenty do niej podajemy ? Że nie pokazałem jak wygląda w ogóle ciało tej funkcji ?

    Nie obraź się, ale to wygląda troszkę tak jakbyś zajrzał TYLKO do kodu na DVD albo na PENDRIVE a do książki ani na sekundę ... gdzie masz DOKŁADNY opis tej funkcji, nie tylko jak ją używać przecież ale po co ona jest, jak działa i jak w ogóle sobie taką funkcję napisać samemu.

    Gdyby tego opisu nie było w książce to w zasadzie o kant tyłka można byłoby taką książkę obić.... Bo na co komu kody źródłowe dołączone do książki w których są jakieś przedziwne funkcje z tysiącami argumentów ...

    Ok - pewnie gdyby ktoś był bardziej zaawansowany w C to przecież na nośniku jest również kod źródłowy tej funkcji i pewnie by sam powoli doszedł, który argument jest do czego - ale ja sobie DOSKONALE zdaję sprawę, że czytelnik po to sięga po książkę, żeby znaleźć w niej opis a nie się domyślać czegoś jak np w literaturze, gdzie tworzy się analizy wierszy i tego co poeta miał na myśli ;)

    Dlatego proszę cię zajrzyj do książki ... poczytaj o tej funkcji a opisuję ją krok po kroku - i wtedy gdy coś będzie niejasne to tutaj śmiało dopytaj - bo po tak zadanym pytaniu to wynikałoby, że musiałbym tu na forum od nowa pisać cały rozdział czyli przepisywać książkę - jest sens ?

    Tymczasem gdy się w kodzie rzuci okiem chociażby na nagłówek tej funkcji, proszę:

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


    to już z samych nazw argumentów widać jak byk, że te dwa twoje zera, czyli argument drugi i trzeci

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


    to zapewne współrzędne x i y - czyli już można się domyślić że chodzi o współrzędne na ekranie LCD

    ale ok w zależności od wersji książki to proszę na stronie 357 masz DOKŁADNY opis tej funkcji - więc może warto zajrzeć do książki jak się już ją ma ? ;) i jak mówiłem wyżej - przeczytać opis - a gdy jakiś jego fragment będzie niejasny to wtedy dopytać ok?

    _________________
    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: 12 sty 2018, o 09:45 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Dziękuję bardzo kolegom za wyjaśnienie.
    Teraz załapałem, o co chodzi. Mirku, możesz wierzyć, lub nie, ale ja czytam ten rozdział i to wielokrotnie. Po prostu akurat ta dziedzina
    wiedzy przychodzi trochę ciężko. Nie będę tutaj zanudzał i ciągnął zbędnych dyskusji (nie chcę marnować Waszego cennego czasu), ale
    nigdy, ale to nigdy nie miałem styczności z całą tą terminologią. Nie studiowałem, nie miałem tego w szkole itd...Jestem na forum już
    dosyć długo i w zasadzie powinienem być o kilka stopni wyżej, ale ja raz siedzę długo przy książkach i atb, a potem jeszcze dłużej nic
    w tym temacie nie robię. To jest tylko moje hobby, które zresztą baaardzo mnie fascynuje, ale praca zawodowa zupełnie nie związana z C i walka o byt nie pozwalają mi spędzać więcej czasu. Mam BB i GB, czytam, zaglądam
    do kursów w necie i tak, jak mówiłem czasem nie rozumiem tego, co czytam.
    Mógłby ktoś powiedzieć "to daj sobie spokój", ale przecież wszystko jest dla ludzi, a gdzie mam szukać pomocy,jak nie tu. W końcu tak
    sobie myślę, ze chyba za bardzo natrętny to nie jestem :lol:
    Druga sprawa, że tok nauki pewnie jest zły. Jedno do końca nie opanowane, a już idziemy dalej...W szkole to były sprawdziany, zaliczenia i ktoś nas kontrolował, a tu wolna amerykanka i to jest chyba główna przyczyna niepowodzeń wielu początkujących.
    Kończąc raz na zawsze te marne usprawiedliwienia :oops: jeszcze raz dzięki Wam za pomoc. Jak będą jakieś konkretne pytania w tym
    temacie, to się zgłoszę. Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 sty 2018, o 10:23 
    Offline
    Moderator
    Avatar użytkownika

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

    Robert_1967 napisał(a):
    Mógłby ktoś powiedzieć "to daj sobie spokój",

    No ja bym tego nie powiedział NIGDY nikomu, wręcz odwrotnie - jak tylko starczy ci sił i ochoty to próbuj DALEJ ;)

    życzę POWODZENIA bo widzę sporą nutkę zacięcia żeby się tego jednak nauczyć ! zobaczysz przyda się ;)

    _________________
    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: 26 sty 2018, o 12:35 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Chciałem prosić o pomoc, ponieważ testuję sobie wyświetlanie buforowe na lcd z tego projektu i kiedy chcę wysłać znak
    "char" , to dostaję taki oto błąd:

    make all
    'Building file: ../main.c'
    'Invoking: AVR Compiler'
    avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.o" -c -o "main.o" "../main.c"
    ../main.c: In function 'main':
    ../main.c:31:3: warning: passing argument 1 of 'buf_char' makes pointer from integer without a cast [enabled by default]
    buf_char('@');
    ^
    In file included from ../main.c:11:0:
    ../buf_lcd.h:35:6: note: expected 'char *' but argument is of type 'int'
    void buf_char(char * wbf, char z);
    ^
    ../main.c:31:3: error: too few arguments to function 'buf_char'
    buf_char('@');
    ^
    In file included from ../main.c:11:0:
    ../buf_lcd.h:35:6: note: declared here
    void buf_char(char * wbf, char z);
    ^
    make: *** [main.o] Błąd 1

    Inne funkcje, które do tej pory używałem działają poprawnie. Proszę podpowiedzieć, co robię źle. Kod:


    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: 26 sty 2018, o 12:41 
    Offline
    Moderator
    Avatar użytkownika

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

    Cytuj:
    void buf_char(char * wbf, char z);


    no panie - masz funkcję do której masz podać 2 argumenty a ty podajesz jeden

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


    i dziwisz się, że kompilator krzyczy że jest "nie halo" ?

    _________________
    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: 26 sty 2018, o 12:51 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Dziękuję Mirku za tak błyskawiczną odpowiedź.
    Gapa ze mnie :oops: . Sprawdzę wieczorkiem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sty 2018, o 07:43 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Witam.
    Dopiero mam dostęp do eclipsa. Pan Mirek zwrócił mi uwagę, ze powinienem podać dwa argumenty zamiast jednego.

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


    Zapewne chodzi o char z, ale proszę mi wybaczyć, nie za bardzo rozumiem, o co chodzi z tym argumentem. Przetrzepałem
    GB i przejrzałem ćwiczenie z pendriva, ale nie rozumiem, co dokładnie podstawić do kodu. No nie wiem
    po prostu :oops: , a chciałbym dalej poćwiczyć wyświetlanie na lcd przy pomocy buforowania. stanąłem w miejscu.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sty 2018, o 07:52 
    Offline
    Moderator
    Avatar użytkownika

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

    no przecież opisuję w GB, że zamieniliśmy sobie funkcje do wyświetlania na LCD na nasze własne funkcje do że tak powiem "wyświetlania" w buforze ram czyli np zamiast

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


    stworzyliśmy sobie funkcję

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


    ta druga po prostu wrzuca tekst nie bezpośrednio na LCD ale do bufora w pamięci RAM procka - do jednej z warstw

    no właśnie - więc? .. .chyba trzeba określić do którego bufora, do której warstwy

    i są na to przecież przykłady w tym kodzie w GB ... nie mów że na Pendrive nie ma kodu w którym nie widać użycia tej funkcji w kodzie właśnie ;) już nie mówiąc że i w książce dokładnie opisuję również i tę funkcję ...

    a więc może na początek zajrzyj do tego kodu i później napisz pytanie czego nie rozumiesz w kodzie ok? Bo pierwszy argument to właśnie wskaźnik do bufora do warstwy.

    _________________
    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: 29 sty 2018, o 08:10 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Wydaje mi się, że masz problem ze zrozumieniem co jest argumentem funkcji, wiec gorąco namawiam do przestudiowania BB.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sty 2018, o 08:31 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Dziękuję Mirku za chęć pomocy.
    Może źle zrobiłem, że na początku nie napisałem dokładnie, co akurat robię. Często spotykałem się z opinią przewagi "sterowania"
    buforowego wyświetlacza lcd nad sprzętowym i postanowiłem się temu bliżej przyjrzeć. Znalazłem "inne" przykłady w necie,
    przystosowałem je do moich aktualnych testów, jeśli chodzi o obsługę wyświetlacza lcd (4x20), ale ja wole używać Twoich funkcji,
    ponieważ zacząłem przygodę z C dzięki Twoim książkom, atb i poradnikom, z czego jestem bardzo zadowolony. Dalej będę korzystał
    z Twoich materiałów, a wiec nie chcę mieszać sobie w głowie różnymi źródłami wiedzy w tym zakresie.
    Ja skompilowałem lekcję L19 i trochę się w niej "pokręciłem", ale jak sam widzisz, muszę się jeszcze wiele nauczyć, a wiec odłożyłem
    ją chwilowo na bok, a skupiłem się tylko na obsłudze lcd (wyświetlenie różnych tekstów na różne sposoby), a żeby porzucić sterowanie
    sprzętowe na poczet sterowania z pamięci ram.
    W związku z powyższym skopiowałem pliki buf_lcd.c, oraz h, zmieniłem cols i rows dla mojego lcd i zacząłem wysyłać stringi w oparciu
    o te pliki. Czyli są one oderwane jakby od całości Twojego projektu. Wszystko było dobrze, dopóki nie chciałem wysłać znaku typu
    char. I z tego powodu powstały te pytania. Będę próbował dojść, co jest nie tak, ale bardzo szkoda mi czasu, a jest jeszcze tyle rzeczy
    , których nie rozumiem. Ot i cała prawda. Pozdrawiam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 sty 2018, o 11:06 
    Offline
    Moderator
    Avatar użytkownika

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

    Przyznaję, że projekt jest nieco rozbudowany bo oprócz warstw dałem tam jeszcze prawie że obiekty i rozumiem, że to może budzić lekką konsternację

    ale jeszcze raz króciutko

    tak jak napisałem wyżej, powiedz mi czy to rozumiesz, że ZAMIAST na LCD wysyłamy tą funkcją lcd_char() znak do bufora w RAM ? czy to jest jasne ?

    a skoro tych buforów jest więcej bo każda warstwa to oddzielny bufor no to trzeba wskazać adres bufora w pierwszym argumencie funkcji a w drugim po prostu dajemy pojedynczy znak do wysłania

    tym adresem bufora może być nazwa tablicy bo przecież bufor to jakaś tablica w RAM

    _________________
    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: 29 sty 2018, o 12:08 
    Offline
    Użytkownik

    Dołączył(a): 18 cze 2015
    Posty: 374
    Pomógł: 0

    Dziękuje Mirku za cierpliwość.
    Ja rozumiem różnicę pomiędzy działaniami na buforze i bezpośrednio na lcd. Otóż udało mi się przerobić funkcje do prawidłowego
    wyświetlania stringów i czarów. u mnie jest tylko jeden główny bufor, ponieważ, jak napisałem wcześniej że testuje w/w funkcje
    na moim wyświetlaczu, a żeby potem użyć już w konkretnym celu. Zrezygnowałem z active_buf, bo akurat w moim przypadku
    jest mi zbędny (na razie), zmniejszyłem liczbę argumentów w funkcjach (tych w/g mnie zbędnych) i wszystko pomału zaczyna
    śmigać. Potem chcę jeszcze zrobić wyświetlanie długich liczb, tak , jak kiedyś prosiłem o pomoc odnośnie sprzętowego sterowania itd...
    Bardzo ciekawi mnie projekt L19 ponieważ, jak napisałeś w GB, to ma on wielki potencjał i nie spocznę, póki go nie "opanuje", ale na ta chwilę nie chcę popełniać starych błędów i iść do przodu bez zrozumienia poszczególnych części programu.
    Tak, to ja się będę męczył, a przy mnie i Wy :lol: . Tak, ze na ten moment ogarnąłem, no i idę dalej po kolejnych funkcjach do lcd.
    dzięki za cierpliwość.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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