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 17 maja 2025, o 10:32


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 8 lut 2023, o 14:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 mar 2014
    Posty: 197
    Lokalizacja: Kielce
    Pomógł: 3

    Witam,

    panowie, czy mógłby ktoś mi łopatologicznie wytłumaczyć co się dzieje w 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.


    Po mojemu to wpisujemy jakiś ciąg znaków np "test". Więc w pętli while zaczynamy inkrementować zmienna s i wysyłać każdą literkę z wpisanego tekstu przez funkcję uart_put. Ale dlaczego jest tam wskaźnik ?? i dlaczego bez tego wskaźnika, nie działa taka funkcja ??
    Generalnie wiem, że kłaniają się tutaj wskaźniki. Wiem co to jest, ale do dnia dzisiejszego nie wiem kiedy je stosować :?


    Proszę o zrozumienie i ewentualne wytłumaczenie tematu ;)

    _________________
    BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lut 2023, o 16:55 
    Offline
    Nowy
    Avatar użytkownika

    Dołączył(a): 11 lip 2022
    Posty: 8
    Pomógł: 2

    1. Jest to funkcja do wysyłania stringa.
    2. Każdy c-string zakończony jest znakiem NULL czyli 0x00.
    3. Wywołując funkcję w postaci uart_puts("Wyswietl to"); powoduje że do pamięci ram zostaje wpisany napis(jako tablica tablica) i zajmuje 12 bajtów (11 liter + NULL). Nazwa tablicy to wskaźnik na 1 element. Wskaźnik wskazuje na pierwszą literę napisu.

    Wczytana jest najpierw 1 litera. Zostaje wysłana na UART a wskaźnik zostaje zwiększony o 1. W następnym obiegu pętli wysyłana jest kolejna litera. I tak do czasu aż znak wskazany przez wskaźnik będzie wynosił NULL. Wtedy pętla zostanie przerwana i funkcja się zakończy.

    Możesz też wywołać funkcje jako argument podając nazwę tablicy do której wcześniej wpisałeś ciąg znaków.

    Wskaźniki Mirek wyjaśnia SUPER w swoim Kursie Języka C dla systemów embeded. Polecam!!!


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lut 2023, o 18:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 mar 2014
    Posty: 197
    Lokalizacja: Kielce
    Pomógł: 3

    Teraz wydaje mi się to w miarę sensowne, dziękuję Ci bardzo za wytłumaczenie.

    Powiem szczerze, że mocno się zastanawiałem nad kursem VIDEO Pana Mirka, miedzy innymi z powodu wskaźników.

    _________________
    BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 lut 2023, o 18:48 
    Offline
    Moderator
    Avatar użytkownika

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

    Rafal9018 napisał(a):
    Powiem szczerze, że mocno się zastanawiałem nad kursem VIDEO Pana Mirka, miedzy innymi z powodu wskaźników.


    to w związku z tym podrzucam kilka nie moich opinii n/t kursu - tylko niektórych z obecnych studentów naszej Akademii ;)

    https://akademia.atnel.pl

    warto poczytać

    Obrazek

    ------------------------ [ Dodano po: 3 minutach ]

    a przy okazji! ... niedługo kończę kurs i po zakończeniu niestety jego cena wzrośnie już do ostatecznej wersji z tzw: "trzeciego okna czasowego" ... zatem jeszcze jest niezła okazja

    _________________
    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: 16 mar 2023, o 01:08 
    Offline
    Nowy

    Dołączył(a): 13 kwi 2016
    Posty: 22
    Pomógł: 1

    Rafal9018 napisał(a):
    Witam,

    panowie, czy mógłby ktoś mi łopatologicznie wytłumaczyć co się dzieje w 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.


    Po mojemu to wpisujemy jakiś ciąg znaków np "test". Więc w pętli while zaczynamy inkrementować zmienna s i wysyłać każdą literkę z wpisanego tekstu przez funkcję uart_put. Ale dlaczego jest tam wskaźnik ?? i dlaczego bez tego wskaźnika, nie działa taka funkcja ??
    Generalnie wiem, że kłaniają się tutaj wskaźniki. Wiem co to jest, ale do dnia dzisiejszego nie wiem kiedy je stosować :?




    Proszę o zrozumienie i ewentualne wytłumaczenie tematu ;)


    Do tej funkcji przekazywany jest wskaźnik na tablicę (on zajmuje dwa bajty) zamiast całej tablicy (czyli długośc całego tekstu plus znak zera na końcu). Dlatego przekazuje się wskaźnik, by zaoszczędzić czas i miejsce na stosie. No dobrze, w funkcji masz do dyspozycji wskaźnik na tablicę, czyli tak naprawdę adres jej pierwszego elementu (on ma numer zero, pamiętaj). Literka 's' oznacza adres (w tym przypadku początku tablicy), ale jeśli użyjemy zapisu '*s', otrzymamy zawartość komórki pamięci, na którą wskazuje s. Jeśli więc wywołujesz funkcję np. tak: uart_puts("test"); s oznacza adres pierwszego elementu tablicy zawierającej napis test, ale żeby odczytać zawartość pierwszego pola, Mirek zastosował *s. Potem, po odczytaniu pola, następuje zwiększenie adresu wskaźnika o jeden element ( czyli s++). Od tej pory wskaźnik wskazuje na kolejny element tablicy, czyli na literkę e. I taki schemat powtarza się w pętli while dopóki odczytanie zawartości spod *s nie napotka na koniec łańcucha znaków, czyli zero. Wtedy pętla jest przerywana i wylatujemy z funkcji, bo nie ma już nic więcej do roboty. Poczytaj na spokojnie bluebook, ewentualnie poszperaj w sieci, bo informacji na ten temat jest całkiem sporo. Gdy już poczujesz się na siłach, płatny kurs na pewno nie zaszkodzi, a na pewno więcej z niego zrozumiesz i zapamiętasz. Pozdrawiam



    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 14 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO