<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=24409&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2023-03-16T01:08:28+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=24409&amp;mode</id>
<entry>
<author><name><![CDATA[skandal_obyczajowy]]></name></author>
<updated>2023-03-16T01:08:28+01:00</updated>
<published>2023-03-16T01:08:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236637#p236637</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236637#p236637"/>
<title type="html"><![CDATA[Re: Wyjasnienie kodu wysłania ciągu znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236637#p236637"><![CDATA[
<div class="quotetitle">Rafal9018 napisał(a):</div><div class="quotecontent"><br />Witam,<br /><br />panowie, czy mógłby ktoś mi łopatologicznie wytłumaczyć co się dzieje w tej funkcji ??<br /><br />[syntax=c]void uart_puts (  char * s){       // funkcja wysyłająca ciąg znaków<br /><br />while (*s) uart_put( *s++ );[/syntax]<br /><br />Po mojemu to wpisujemy jakiś ciąg znaków np &quot;test&quot;. 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 ??<br />Generalnie wiem, że kłaniają się tutaj wskaźniki. Wiem co to jest, ale do dnia dzisiejszego nie wiem kiedy je stosować  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br /><br /><br /><br /><br />Proszę o zrozumienie i ewentualne wytłumaczenie tematu  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br /><br />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(&quot;test&quot;);  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<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13646">skandal_obyczajowy</a> — 16 mar 2023, o 01:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2023-02-08T18:48:20+01:00</updated>
<published>2023-02-08T18:48:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236505#p236505</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236505#p236505"/>
<title type="html"><![CDATA[Re: Wyjasnienie kodu wysłania ciągu znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236505#p236505"><![CDATA[
<div class="quotetitle">Rafal9018 napisał(a):</div><div class="quotecontent"><br />Powiem szczerze, że mocno się zastanawiałem nad kursem VIDEO Pana Mirka, miedzy innymi z powodu wskaźników.<br /></div><br /><br />to w związku z tym podrzucam kilka nie moich opinii n/t kursu - tylko niektórych z obecnych studentów naszej Akademii <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- m --><a class="postlink" href="https://akademia.atnel.pl" >https://akademia.atnel.pl</a><!-- m --> <br /><br />warto poczytać <br /><br /><img src="https://obrazkiforum.atnel.pl/54/8813bc24d686938c7a32937eec667c4f.png" alt="Obrazek" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />a przy okazji! ... niedługo kończę kurs i po zakończeniu niestety jego cena wzrośnie już do ostatecznej wersji z tzw: &quot;trzeciego okna czasowego&quot; ... zatem jeszcze jest niezła okazja<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 lut 2023, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2023-02-08T18:01:49+01:00</updated>
<published>2023-02-08T18:01:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236504#p236504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236504#p236504"/>
<title type="html"><![CDATA[Re: Wyjasnienie kodu wysłania ciągu znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236504#p236504"><![CDATA[
Teraz wydaje mi się to w miarę sensowne, dziękuję Ci bardzo za wytłumaczenie. <br /><br />Powiem szczerze, że mocno się zastanawiałem nad kursem VIDEO Pana Mirka, miedzy innymi z powodu wskaźników.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 8 lut 2023, o 18:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cedrom]]></name></author>
<updated>2023-02-08T16:55:29+01:00</updated>
<published>2023-02-08T16:55:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236503#p236503</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236503#p236503"/>
<title type="html"><![CDATA[Re: Wyjasnienie kodu wysłania ciągu znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236503#p236503"><![CDATA[
1. Jest to funkcja do wysyłania stringa.<br />2. Każdy c-string zakończony jest znakiem NULL czyli 0x00.<br />3. Wywołując funkcję w postaci uart_puts(&quot;Wyswietl to&quot;); 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.<br /><br />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.<br /><br />Możesz też wywołać funkcje jako argument podając nazwę tablicy do której wcześniej wpisałeś ciąg znaków.<br /><br />Wskaźniki Mirek wyjaśnia SUPER w swoim Kursie Języka C dla systemów embeded. Polecam!!!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21939">cedrom</a> — 8 lut 2023, o 16:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafal9018]]></name></author>
<updated>2023-02-08T14:44:32+01:00</updated>
<published>2023-02-08T14:44:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236502#p236502</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236502#p236502"/>
<title type="html"><![CDATA[Wyjasnienie kodu wysłania ciągu znaków UART]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24409&amp;p=236502#p236502"><![CDATA[
Witam,<br /><br />panowie, czy mógłby ktoś mi łopatologicznie wytłumaczyć co się dzieje w tej funkcji ??<br /><br />[syntax=c]void uart_puts (  char * s){       // funkcja wysyłająca ciąg znaków<br /><br />while (*s) uart_put( *s++ );[/syntax]<br /><br />Po mojemu to wpisujemy jakiś ciąg znaków np &quot;test&quot;. 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 ??<br />Generalnie wiem, że kłaniają się tutaj wskaźniki. Wiem co to jest, ale do dnia dzisiejszego nie wiem kiedy je stosować  <img src="https://forum.atnel.pl/images/smilies/icon_e_confused.gif" alt=":?" title="Boi się" /> <br /><br /><br />Proszę o zrozumienie i ewentualne wytłumaczenie tematu  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3441">Rafal9018</a> — 8 lut 2023, o 14:44</p><hr />
]]></content>
</entry>
</feed>