<?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=3451&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-08-22T09:30:42+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3451&amp;mode</id>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-08-22T09:30:42+01:00</updated>
<published>2013-08-22T09:30:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46622#p46622</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46622#p46622"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46622#p46622"><![CDATA[
Tak też myślałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> <br />Uruchomiłem menu na LCD graficznym super wygląda. Wybrane pozycja w moim przypadku robi się 'negatywem' <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> <br />Natomiast do obsługi chciałbym użyć tylko 3 przycisków 'prawo', 'lewo' i 'enter' ale wiąże się to z tym, że na każdym poziomie menu musiałbym mieć dodatkową linijkę 'wstecz', po której podświetleniu i naciśnięciu 'enter' cofałbym się o poziom wyżej.<br />Jak najprościej można by było to zrealizować ?<br /><br />Udanego wypoczynku <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 22 sie 2013, o 09:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2013-08-21T21:07:24+01:00</updated>
<published>2013-08-21T21:07:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46550#p46550</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46550#p46550"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46550#p46550"><![CDATA[
Obydwie linijki odnoszą się do znaku &quot;kursora&quot; menu. graficznie to wygląda jak wypełniony znak &gt; <br />Jak w wrócę do domu (weekend) to ewentualnie zamieszczę fotę lub filmik.<br />Pozdrawiam z Tatr:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 21 sie 2013, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-08-18T14:34:38+01:00</updated>
<published>2013-08-18T14:34:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46184#p46184</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46184#p46184"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=46184#p46184"><![CDATA[
<div class="quotetitle">Lukasz89 napisał(a):</div><div class="quotecontent"><br />tu wystarczy wprowadzić taką zmianę:<br /><br />    menu menu1 = {tmenu1, &amp;submenu11, &amp;menu2, &amp;stop};<br /></div><br />lub można<br />[syntax=c]menu menu1 = {&amp;tmenu1&#91;0&#93;, &amp;submenu11, &amp;menu2, &amp;stop};[/syntax]<br />Chodzi oto, że argumentem menu jest wskaźnik, więc albo <strong>sama</strong> nazwa tablicy która jest wskaźnikiem na zerowy jej element lub za pomocą operatora pobrania adresu &amp; ale wtenczas trzeba wskazać element tablicy [0] <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br />Ale tak to jest; na początku jest ciężko to wszystko na raz ogarnąć. Dobrze, że jest takie forum <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Jeszcze mam takie krótkie pytanko; jakie symbole kryją się po elementami tej tablicy:<br />[syntax=c]uint8_t tab1&#91;&#93;={ 0x08, 0x0C, 0x0E, 0x0F, 0x0E, 0x0C, 0x08, 0x00,};[/syntax]<br />oraz znak<br />[syntax=c]&quot;\x80&quot; w funkcji lcd_str(&quot;\x80&quot;);[/syntax]<br />Chodzi oto, że uruchomiłem to menu na innym wyświetlaczu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 18 sie 2013, o 14:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2013-08-16T11:02:03+01:00</updated>
<published>2013-08-16T11:02:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=45876#p45876</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=45876#p45876"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=45876#p45876"><![CDATA[
<div class="quotetitle">qutrit napisał(a):</div><div class="quotecontent"><br />W<br />[syntax=c]../main.c:41:17: warning: comparison between pointer and integer[/syntax]<br />Szukałem po googlach ale ciężko jest mi znaleźć coś w języku polskim <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /> Póki co wyświetla mi na LCD napis &quot;menu1&quot; ale na razie chciałbym się pozbyć wszelkich błędów, a później będę próbował.<br /></div><br />Jeżeli nie rozumiesz błedu po ang to wystarczy go przetłumaczyć, choćby google translator.<br />chodzi o to, że porównujemy menu_flag z pozycją czyli zmian typu uint z wskaźnikiem (zaś wskaźnik nie jest niczym innym jak liczbą uint oznaczając adres w pamięci megi), ale dla poprawności zmieniłem typ zmiennych pomocniczych: menu_flag i i,j z funkcji menu na typ wskaźnika na menu, zaś w main wyrzuciłem rzutowanie. Zaraz dodam do tematu o menu poprawiony kod.<br /><div class="quotetitle">qutrit napisał(a):</div><div class="quotecontent"><br />[syntax=c]menu menu1 = {&amp;tmenu1, &amp;submenu11, &amp;menu2, &amp;stop};[/syntax]<br />[syntax=c]warning: excess elements in struct initializer<br />../menu.c:26:1: warning: initialization from incompatible pointer type[/syntax]<br /></div><br />tu wystarczy wprowadzić taką zmianę:<br />[syntax=c]menu menu1 = {tmenu1, &amp;submenu11, &amp;menu2, &amp;stop};[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 16 sie 2013, o 11:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-08-15T21:59:56+01:00</updated>
<published>2013-08-15T21:59:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=45854#p45854</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=45854#p45854"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=45854#p45854"><![CDATA[
Witam ponownie.<br />Zastosowałem się do wszystkich poprawek związanych z menu ale nadal mam warningi dotyczące tego fragmentu kodu<br />[syntax=c]menu stop = {0,&amp;menu1,&amp;menu1,&amp;menu1,&amp;stop};<br />menu menu1 = {&amp;tmenu1, &amp;submenu11, &amp;menu2, &amp;stop};<br />menu submenu11 = {&amp;tsub11, &amp;submenu11, &amp;submenu12, &amp;menu1};<br />menu submenu12 = {&amp;tsub12, &amp;submenu12 ,&amp;submenu11, &amp;menu1};<br />menu menu2 ={&amp;tmenu2, &amp;submenu2, &amp;menu3, &amp;stop};<br />menu submenu2 = {&amp;tmenu21, &amp;submenu2, &amp;submenu2, &amp;menu2};<br />menu menu3 = {&amp;tmenu3, &amp;menu3, &amp;menu1, &amp;stop};[/syntax]<br />błędy to:<br />[syntax=c]warning: excess elements in struct initializer<br />../menu.c:25:1: warning: (near initialization for ‘stop’)<br />../menu.c:26:1: warning: initialization from incompatible pointer type<br />../menu.c:27:1: warning: initialization from incompatible pointer type<br />../menu.c:28:1: warning: initialization from incompatible pointer type<br />../menu.c:29:1: warning: initialization from incompatible pointer type<br />../menu.c:30:1: warning: initialization from incompatible pointer type<br />../menu.c:31:1: warning: initialization from incompatible pointer type[/syntax]<br /><br />Drugi warning pochodzi od linijki<br />[syntax=c]if(menu_flag!=pozycja)[/syntax]<br />i jest następujący <br />[syntax=c]../main.c:41:17: warning: comparison between pointer and integer[/syntax]<br /><br />Szukałem po googlach ale ciężko jest mi znaleźć coś w języku polskim <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /> Póki co wyświetla mi na LCD napis &quot;menu1&quot; ale na razie chciałbym się pozbyć wszelkich błędów, a później będę próbował.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 15 sie 2013, o 21:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2013-07-19T21:30:56+01:00</updated>
<published>2013-07-19T21:30:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42422#p42422</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42422#p42422"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42422#p42422"><![CDATA[
Pomożemy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Co do elementu prev to początkowo (w wersji 0.5 był) a potem kombinowałem jak go wyeliminować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 19 lip 2013, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-07-18T20:28:23+01:00</updated>
<published>2013-07-18T20:28:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42345#p42345</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42345#p42345"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42345#p42345"><![CDATA[
Masz rację, ładnie przechodzi z menu1 do menu3. Myślę, że można to uprościć dodając do struktury jeszcze jeden składnik odpowiedzialny za przejście wstecz, czyli:<br />[syntax=c]typedef char PROGMEM tmenu;<br />    typedef struct menu menu;<br />    struct menu<br />    {                                       // struktura reazlaiujaca menu<br />            tmenu *name;    //napis wyświetlany na lcd<br />             menu *sub;             //wskaźnik do submenu<br />             menu *next;    //wskaźnik do następnego manu na tym samym poziomie<br />             menu *parent;  //wskaźnik do manu nadrzędnego<br />             menu *prev;  //wskaźnik do poprzedniego manu na tym samym poziomie - dodany składnik<br />    };[/syntax]<br />ale jak wspomniałeś wiąże się to z dodatkową pamięcią. Funkcja prev(); w obecnej postaci zajmuje z pewnością mniej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /><br />Można powiedzieć, że MENU rozgryzłem na kartce papieru. Czas przejść do praktyki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /> <br />Pewnie się jeszcze zwrócę o pomoc w kwestii chociażby takiej, jak najlepiej zrealizować ustawienie godziny za pomocą tego MENU, ale to dopiero jak je uruchomię <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br />Póki co serdecznie DZIĘKUJĘ za okazałą pomoc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 18 lip 2013, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2013-07-17T19:52:14+01:00</updated>
<published>2013-07-17T19:52:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42208#p42208</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42208#p42208"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42208#p42208"><![CDATA[
Rozbiłeś to normalnie na części pierwsze, tak jak ja gdy to pisałem <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />Dodam do Twojego rozumowania tylko uwagę, że funkcja prev mogła by być łatwiejsza i krótsza, ale należało by rozbudować strukturę - więcej pamięci.<br />jeśli menu1 to na pewno przejdzie do menu 3, przemyśl sobie jeszcze raz.<br />Obecnie w trakcie budowy jednego z układów natknąłem się na mały bład, który wyeliminowąłem jedna liniją. obecna postać funkcji prev to:<br />[syntax=c]void prev(void)<br />{<br />menu*i;<br />i=(pozycja-&gt;parent)-&gt;sub;<br />if(pozycja != &amp;stop){ //new<br />while(i-&gt;next != pozycja)i=i-&gt;next;}<br />pozycja=i;<br />}[/syntax]<br />bez tej lini są problemy w przypadku wywołania prev na ekranie głównym - procek ucieka w kszaki ityle go widzieli  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 17 lip 2013, o 19:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-07-17T08:33:31+01:00</updated>
<published>2013-07-17T08:33:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42138#p42138</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42138#p42138"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42138#p42138"><![CDATA[
Dzięki za odpowiedzi. Tak też myślałem, ale na razie zrobię na zwykłych przyciskach. Jak będzie działać, to wezmę się za encoder <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br />Tymczasem menu już mam prawie całe rozgryzione na kartce papieru <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> Zatrzymałem się na funkcji prev();<br />[syntax=c]void prev(void)<br />        {<br />                menu*i;<br />                i=(pozycja-&gt;parent)-&gt;sub;<br />                while(i-&gt;next != pozycja)i=i-&gt;next;<br />                pozycja=i;<br />        }[/syntax]<br />Jak rozumiem jest to f. która jest przeciwna do funkcji next();. Czyli służy do poruszania się po menu na tym samym poziomie przeciwnie do next(); <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" />. Jeżeli next(); powoduje przejścia np. menu1-&gt;menu2-&gt;menu3, to f. prev(); menu3-&gt;menu2-&gt;menu1 czyli przeciwnie. Ale teraz jak to wygląda teoretycznie... załóżmy, że jestem na menu3 i wciskam przycisk który wywołuje mi f. prev();, to skutkiem powinno być pojawienie się na LCD menu2, więc:<br />[syntax=c]pozycja=menu3;[/syntax] następnie w f. prev(); tworzymy 'lokalny' wskaźnik 'i' na strukt. menu. Następnie mamy wyrażenie[syntax=c]i=(pozycja-&gt;parent)-&gt;sub;[/syntax] które według mnie powinno być równe: <br />[syntax=c](pozycja-&gt;parent) daje nam &amp;stop[/syntax] czyli wskaźnik na strukturę menu stop; Więc teraz<br />[syntax=c]i=menu stop -&gt;sub[/syntax] to według mnie jest równe wskaźnikowi na manu1 ? Czyli w konsekwencji [syntax=c]i=menu1;[/syntax] Taki wynik trafia do while() który jest spełniony, więc przypisuje wskaźnikowi adres i = i-&gt;next czyli i = menu2; Więc  [syntax=c]pozycja =menu2[/syntax] czyli tak jak być powinno <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />Czy moje powyższe teoretyczne rozumowanie jest prawidłowe  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><br /><br />Ale coś jest nie tak w tym moim rozumowaniu, bo gdy początkowa pozycja = menu1, to po f. prev(); też trafiam do 'menu2;' a chyba pozycja powinna być nie zmieniona i wskazywać w tym przypadku cały czas na nenu1; gdy wciskany jest przycisk odpowiedzialny za f. prev();  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 17 lip 2013, o 08:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2013-07-16T19:41:10+01:00</updated>
<published>2013-07-16T19:41:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42080#p42080</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42080#p42080"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=42080#p42080"><![CDATA[
<div class="quotetitle">qutrit napisał(a):</div><div class="quotecontent"><br />Od razu piszę, że nie jest mi znana obsługa enkodera i stąd moje pytanie.<br /></div><br />Zaś odpowiedź jest właśnie w obsłudze enkodera w przerwaniu <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />zmienna enco  może przyjmować różne wartość. Znak określa kierunek wiec decyduje czy chodzimy po menu do przodu czy tak jak rak na wznak (nie czuje że rymuje <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> ).<br />Wartość zmiennej enco określa o ile tyknięć ma przeskoczyć - to w sumie takie założenie gdy ktoś by szybko kręcił a procesor np. miałby coś ważniejszego w tym momencie niż pętla while.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 16 lip 2013, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-07-15T23:37:46+01:00</updated>
<published>2013-07-15T23:37:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41994#p41994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41994#p41994"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41994#p41994"><![CDATA[
Dzięki za wyjaśnienia, powoli dotarłem już do pliku main.c a w nim w pętli while mamy coś takiego:<br />[syntax=c]if(menu_flag!=pozycja){ // * &quot;chodzenie&quot; po menu<br />                enco += encode_read4();<br />                                        if(enco&gt;0)//next<br />                                        {uint8_t i=0;<br />                                        for(i=1;i&lt;=enco;i++)next();<br />                                        enco=0;<br />                                        }<br /> <br />                                        if(enco&lt;0)//prev<br />                                        {uint8_t i=0;<br />                                        for(i=1;i&lt;=-enco;i++)prev();<br />                                        enco=0; }<br /> <br />                                       <br />        }[/syntax]<br />Od razu piszę, że nie jest mi znana obsługa enkodera i stąd moje pytanie. Mamy zmienną enco; która ( jak się domyślam ) może przyjmować wartości dodatnie ( dla funk. next(); ) i ujemne ( dla funk. prev(); ) Po co w takim razie jest tam pętla for() ? Przecież pomiędzy np. if(enco&gt;0) a for () nie ma żadnej zwłoki czasowej, więc ta pętla wykonywana jest od razu (zawsze jeden raz) gdy spełniony jest if() ? Z powyższego kodu wynika, że gdy kręcimy enkoderem, to ustalamy wartość zmiennej enco; a następnie (po upływie krótkiego czasu)  w zależności od znaku i wartości zmiennej enco; wykona się for(); Krótko pisząc czy nie wyszłoby na to samo gdyby było tak:  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" /> <br />[syntax=c]if(menu_flag!=pozycja){ // * &quot;chodzenie&quot; po menu<br />                enco += encode_read4();<br />                                        if(enco&gt;0)//next<br />                                        {<br />                                        next();<br />                                        enco=0;<br />                                        }<br /> <br />                                        if(enco&lt;0)//prev<br />                                        {<br />                                        prev();<br />                                        enco=0;              <br />                                        }<br /> <br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 15 lip 2013, o 23:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-12T11:37:09+01:00</updated>
<published>2013-07-12T11:37:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41460#p41460</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41460#p41460"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41460#p41460"><![CDATA[
Dlatego widzisz panie Lukasz89 jak ciężko innym zrozumieć czyjś kod - gdy się nie stosuje dobrych i sprawdzonych zasad programowania. Ty rozumiesz - ale inni ? ... za diabła czasem nie zaskoczą .... a i ty sam za kilka lat możesz się zdziwić jak zajrzysz do takiego kodu. Dlatego jednak warto programować przejrzyście ... tak jak o tym wszędzie piszę i promuję takie zasady.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 lip 2013, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Lukasz89]]></name></author>
<updated>2013-07-12T10:40:54+01:00</updated>
<published>2013-07-12T10:40:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41448#p41448</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41448#p41448"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41448#p41448"><![CDATA[
No faktycznie mogłem rozróżnić menu i menu <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><br />A co do struktury w strukturze, to było by tak gdyby nie było gwiazdki np.:<br />[syntax=c]menu *sub;[/syntax]<br />jednak gwiazdka oznacza, że ten element nie jest struktury nie jest strukturą, a jedynie wskaźnikiem na inną strukturę. A na jaką ? a to już precyzujemy przy definicji konkretnych elementów menu.<br />a  i tmenu to nie jest Tmenu made by Mirek.<br />tmenu oznaczyłem jako tytuł / nazwę menu czyli napis.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=590">Lukasz89</a> — 12 lip 2013, o 10:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-07-12T08:28:13+01:00</updated>
<published>2013-07-12T08:28:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41437#p41437</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41437#p41437"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=41437#p41437"><![CDATA[
Witam ponownie.<br />Więc struktury, wskaźniki do struktur z grubsza mam opanowane, ale...<br />W kodzie w pliku menu.h mamy oto taki fragment: <br />[syntax=c]typedef char PROGMEM tmenu;<br />typedef struct menu menu;<br />struct menu<br />{                                       // struktura reazlaiujaca menu<br />        tmenu *name;    //napis wyświetlany na lcd<br />         menu *sub;             //wskaźnik do submenu<br />         menu *next;    //wskaźnik do następnego manu na tym samym poziomie<br />         menu *parent;  //wskaźnik do manu nadrzędnego<br />};[/syntax]<br /><br />typedef char PROGMEM tmenu; - &quot;tworzymy&quot; nowy typ danych który nazywamy tmenu i to rozumiem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  Natomiast mam mały problem z takim zapisem <span style="color: #80BF00">typedef struct menu menu;</span> ja rozumiem to w ten sposób, że 'menu' jest &quot;stworzonym&quot; przez autora typem, który wygląda jak struktura 'menu'  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" />  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" />  Jeśli tak, to czy każdy składnik 'struct menu' (np. menu *sub;) jest także strukturą  <img src="https://forum.atnel.pl/images/smilies/icon_question.gif" alt=":?:" title="Znak zapytania" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_surprised.gif" alt=":o" title="Zdziwiony" />  Czyli jest to struktura w strukturze  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> Kurcze po prostu struktura nazywa się 'menu' jej składniki są 'menu', za dużo tych 'menu'. Bardzo proszę o wyjaśnienie.  <img src="https://forum.atnel.pl/images/smilies/icon_cry.gif" alt=":cry:" title="Płacze" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 12 lip 2013, o 08:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-05T09:44:53+01:00</updated>
<published>2013-07-05T09:44:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40876#p40876</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40876#p40876"/>
<title type="html"><![CDATA[Re: Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40876#p40876"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />że tutaj się dało. Ale rzeczywiście tutaj mamy do czynienia z deklaracją i od razu inicjalizacją tekstem.<br /></div><br /><br />A widzisz - mówiłem że to że nie wiesz czym różni się DEKLARACJA od DEFINICJI doprowadzać cię będzie do szaleństwa w C <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />więc już w tym zdaniu wyżej popełniasz KARDYNALNY BŁĄD (uwierz mi) ... powinieneś powiedzieć tak:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />że tutaj się dało. Ale rzeczywiście tutaj mamy do czynienia z <span style="color: #FF0000"><strong>DEFINICJĄ </strong></span>i od razu inicjalizacją tekstem.<br /></div><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br /><div class="quotetitle">qutrit napisał(a):</div><div class="quotecontent"><br />Chyba że za pomocą pętli for() lub jak kolega wyżej przedstawił każdy znak osobno.<br /></div><br /><br />a funkcje wbudowane w C do obsługi C-stringów ale i pamięci to co kot zjadł ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />memcpy()<br /><br />strcat()<br /><br />i podobne ?<br /><br />nie mówiąc o sprintf() - chociaż ta już pochłania ciut więcej Flasha ale masz za to fajne możliwości formatowania. Wprowadzanie literka po literce zdania które ma np 86 liter to sam chyba przyznasz że byłoby niedorzecznością<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 lip 2013, o 09:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-07-05T08:13:07+01:00</updated>
<published>2013-07-05T08:13:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40872#p40872</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40872#p40872"/>
<title type="html"><![CDATA[Re: Struktury w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40872#p40872"><![CDATA[
Dzięki za odpowiedzi.<br />Zgubiło mnie to:<br />[syntax=c]char tab&#91;12&#93; = {&quot;bart&quot;};[/syntax]<br />że tutaj się dało. Ale rzeczywiście tutaj mamy do czynienia z deklaracją i od razu inicjalizacją tekstem. Jakoś w dotychczasowych programach nie stosowałem tablicy typu char tab[xx]; i później nie próbowałem do niej przypisać tekstu, dla tego teraz wyszedł brak mojej wiedzy na ten temat.<br />A w w/w strukturze mamy już powołaną do życia tablice <br />[syntax=c]char imie&#91;10&#93;;[/syntax]<br /> i następnie chcemy do niej w dalszej części programu wpisać tekst (string), i tak się nie da. Chyba że za pomocą pętli for() lub jak kolega wyżej przedstawił każdy znak osobno. <br /><br />Do moderatora:<br />P.S. Może umieścić na początku info, że ten temat jest powiązany z Menu na LCD kolegi Lukasz89 ? Może w ogóle zmienić temat na &quot;Proste pytania dotyczące Menu na LCD&quot; ? Pewnie jeszcze zwrócę się do Was o pomoc w sprawie tego menu. A zakładać do każdego pytania nowy temat.....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 5 lip 2013, o 08:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-05T05:19:34+01:00</updated>
<published>2013-07-05T05:19:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40868#p40868</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40868#p40868"/>
<title type="html"><![CDATA[Re: Struktury w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40868#p40868"><![CDATA[
<div class="quotetitle">arturf209 napisał(a):</div><div class="quotecontent"><br />Wydaje mi się, że nie próbowałeś a tak powinno działać.<br /></div><br /><br />No to niestety się koledze tylko wydaje <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ... to nigdy nie zadziała i pisał o tym wyżej Antystatyczny.<br /><br />REASUMUJĄC:<br /><br />1. nie definiujcie struktur wewnątrz funkcji bo to nieporozumienie, które będzie później prowadzić do dalszych zgubnych skutków, chociaż akurat ta uwaga nie ma nic wspólnego z tym wątkiem tzn z tym że nie udaje ci się przypisać stringa w taki sposób o jakim piszesz.<br /><br />2. inicjalizację struktury można zrobić TYLKO I WYŁĄCZNIE przy jej definiowaniu ... czyli poza obrębem funkcji - nie ma innego wyjścia<br /><br />3. a to co chcesz zrobić w kodzie czyli np:<br /><br />ONA.wiek = 77; // ok<br /><br />to  nie nazywa się inicjalizacją struktury a NAJZWYKLEJSZYM zapisem danej do zmiennej (prostej zmiennej), i teraz wracając do tego o czym wspomniał słusznie Anty. Tablice to zmienne złożone i to CAŁKIEM inna sprawa - to nie język C++ i stringi. Tu mamy do czynienia z C-stringami, czyli sami je musimy obsługiwać a zatem NIGDZIE w programie , podkreślam NIGDZIE, i nie ważne czy masz tablicę zdefiniowaną w strukturze czy luzem, nie MOŻNA DO NIEJ przypisać stringa na zasadzie:<br /><br />tablica = &quot;ala i as&quot;;<br /><br />bo to w C jej bez sensu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Wiem, wiem - na początku nauki C a szczególnie po Bascomie albo po językach wyższego poziomu z PC'ta - ten fakt boli i przeraża <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> ale uwierz - nie tylko da się z tym żyć - ale to jest nawet wygodne. Trzeba tylko zrozumieć zasady rządzące C-stringami.<br /><br />Jeśli więc masz możliwość inicjalizacji struktury czy tablicy w trakcie jej definiowania to po co przypisywać jakieś wartości wewnątrz funkcji ? Trzeba korzystać z tego co jest możliwe w C a dalej będzie już prościej <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=54">mirekk36</a> — 5 lip 2013, o 05:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arturf209]]></name></author>
<updated>2013-07-05T02:12:56+01:00</updated>
<published>2013-07-05T02:12:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40866#p40866</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40866#p40866"/>
<title type="html"><![CDATA[Re: Struktury w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40866#p40866"><![CDATA[
Sposób trzeci, próbowałeś tak:<br /><br />[syntax=c]ONA.imie&#91;10&#93; = &quot;ania&quot;;[/syntax]<br />??<br /><br /><br />Wydaje mi się, że nie próbowałeś a tak powinno działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=801">arturf209</a> — 5 lip 2013, o 02:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[qutrit]]></name></author>
<updated>2013-07-04T23:19:09+01:00</updated>
<published>2013-07-04T23:19:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40864#p40864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40864#p40864"/>
<title type="html"><![CDATA[Struktury w C (Menu na LCD)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3451&amp;p=40864#p40864"><![CDATA[
<span style="color: #40FF40">Obecny wątek nawiązuje do:<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic2226.html" >topic2226.html</a><!-- l --><br />    (Anty)</span><br /><br />Więc zacząłem  analizować to menu od samego początku czyli od 'poznania' czym jest struktura. Nie obyło się bez problemu, oto on. <br /><br />W funkcji main() zadeklarowałem sobie strukturę do której chciałem wpisać dane robiąc to na trzy sposoby.<br />[syntax=c]main()<br />{<br />.<br />.<br />struct osoba {<br />char imie&#91;10&#93;;<br />char nazwisko&#91;10&#93;;<br />int wiek;<br />};<br />/*** pierwszy sposób ***//<br />struct osoba ONA = {&quot;ania&quot;,&quot;baczek&quot;,45 }; //działa OK.<br /><br />/*** drugi sposób ***//<br />struct osoba ONA; //deklaruję zmienną strukturalną o nazwie ONA<br />ONA = {&quot;ania&quot;,&quot;baczek&quot;,45 }; //błąd, chociaż jest to analogiczny sposób do tego powyżej tylko rozbity na 'dwie' części<br /><br />/*** trzeci sposób - bezpośrednio do zmiennych w strukturze ***//<br />struct osoba ONA;<br />ONA.wiek = 77; // ok<br />ONA.imie = &quot; ania &quot;;  //błąd ?????? próbowałem również ONA.imie = {&quot; ania &quot;}; jak również w akcie desperacji ONA.imie&#91;10&#93; = {&quot; ania &quot;};<br /><br />/** Gdy imie w strukturze jest zadeklarowane jako pojedyncza zmienna char imie; to definiując ją jako ONA.imie = 'a'; kompiluje się bez błędu. **/ <br />.<br />char tab&#91;12&#93; = {&quot;bart&quot;}; //przykładowa tablica - kompiluje się bez błędu.<br />.<br />}[/syntax]<br />W necie jest sporo przykładów ale niestety wszystkie dotyczą zmiennej &quot;string&quot; a nie zwykłej tablicy typu char, lub od razu wprowadzają wskaźniki <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":-(" title="Smutny" /> Najbardziej mnie dziwi błąd przy ONA.imie. Skoro imie jest tablicą typu char, to dlaczego nie można do niej zapisać stringa ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=766">qutrit</a> — 4 lip 2013, o 23:19</p><hr />
]]></content>
</entry>
</feed>