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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-09-16T11:07:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1545&amp;mode</id>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-09-16T11:07:21+01:00</updated>
<published>2012-09-16T11:07:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15241#p15241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15241#p15241"/>
<title type="html"><![CDATA[Re: ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15241#p15241"><![CDATA[
Trochę się źle wyraziłem na początku, oczywiście nie sama funkcja find_key_val nadaje zmiennej wartość &quot;5&quot; ale kod który wkleiłem w poprzednim poście.<br />A skąd stwierdzenie, że on nada zmiennej lcd_cmd wartość &quot;5&quot;? Jeśli w urlu jest ?sw=1 dioda się zapala czyli musi wejść do tego if'a który za owo zapalenie odpowiada i zwrócić &quot;1&quot;, analogicznie ?sw=0. Tak więc jeśli w urlu pojawi się ?sw=5 to w instrukcji warunkowej odpowiadającej za tą cyfrę jest nadawanie zmiennej lcd_cmd wartości &quot;5&quot;<br />[syntax=c]if (gStrbuf[0]=='1'){<br />                        return(1);<br />                }<br />                //sw==5 uruchamia lcd<br />                if (gStrbuf[0]=='5'){<br />                lcd_cmd=5;<br />                return(5);[/syntax]<br /><br />Hmm natchnęło mnie i sam sobie odpowiem dla potomnych;)<br />owszem zmienne lcd_cmd otrzyma wartość 5 ale return który jest za nią wyjdzie z funkcji analyse_get_url w której nieopatrznie zapisałem co ma owa zmienna zrobić tj. wyświetlić tekst na lcd;)<br />Całość funkcji:<br />[syntax=c]int8_t analyse_get_url(char *str)<br />{<br />        uint8_t loop=15;<br />        uint8_t lcd_cmd=0;<br />        // the first slash:<br />        if (*str == '/'){<br />                str++;<br />        }else{<br />                return(-1);<br />        }<br />        if (strncmp(&quot;favicon.ico&quot;,str,11)==0){<br />                return(2);<br />        }<br />        // the password:<br />        if(verify_password(str)==0){<br />                return(-1);<br />        }<br />        // move forward to the first space or '/'<br />        while(loop){<br />                if(*str==' '){<br />                        // end of url and no slash after password:<br />                        return(-2);<br />                }<br />                if(*str=='/'){<br />                        // end of password<br />                        loop=0;<br />                        continue;<br />                }<br />                str++;<br />                loop--; // do not loop too long<br />        }<br />        // str is now something like password?sw=1 or just end of url<br />        if (find_key_val(str,gStrbuf,5,&quot;sw&quot;)){<br />                if (gStrbuf[0]=='0'){<br />                        return(0);<br />                }<br />                if (gStrbuf[0]=='1'){<br />                        return(1);<br />                }<br />                //sw==5 uruchamia lcd<br />                if (gStrbuf[0]=='5'){<br />                lcd_cmd=5;<br />                return(5);<br />                }<br />        }<br />        //wyswietlanie txt z www na lcd<br />        if (lcd_cmd==5){<br />        lcd_cls();<br />        lcd_str(&quot;aaa&quot;);<br />        if (find_key_val(str,gStrbuf,5,&quot;l1&quot;)){<br />        lcd_str(&quot;aaa&quot;); //test czy w ogole znajduje &quot;l1&quot;<br />        urldecode(gStrbuf);<br />                lcd_str(gStrbuf);<br />        }<br />        if (find_key_val(str,gStrbuf,5,&quot;l2&quot;)){<br />        lcd_locate(0,1);<br />                urldecode(str);<br />                lcd_str(str);<br />            }<br />        }<br /><br />        return(-3);<br />}[/syntax]<br />Zaraz sprawdzę czy dobrze myślę:)<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 12 minutach ]</span></strong><br /><br />Usunięcie return(5) z:<br />[syntax=c]//sw==5 uruchamia lcd<br />                if (gStrbuf[0]=='5'){<br />                        lcd_cmd=5;<br />                        return(5);<br />                }[/syntax]<br />Pomogło:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 16 wrz 2012, o 11:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-16T10:46:22+01:00</updated>
<published>2012-09-16T10:46:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15239#p15239</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15239#p15239"/>
<title type="html"><![CDATA[Re: ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15239#p15239"><![CDATA[
Ciężko mi to analizować bo nie widzę całości ale też nie miałbym czasu analizować całość - jednak coś tu może ci się miesza, bo piszesz, że:<br /><br />funkcja find_key_val() zapala diodę to powinna też nadać lcd_cmd wartość = 5<br /><br />a co ma jedno do drugiego ?<br /><br />to co pokazałeś wyżej to wcale nie można określić stwierdzeniem że ta funkcja nada wartość zmiennej lcd_cmd <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> skąd taki pomysł ?<br /><br />to warunek IF oraz wartość gStrbuf[0] wpływa na to co się stanie z tą zmienną a to bardzo DUŻA różnica i na twoim miejscu za pomocą diody LED to ja bym sobie sprawdzał wewnątrz funkcji co się dzieje po kolei z wartościami w strbuf .... czyli dużo wcześniej niż po wykonaniu funkcji<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 wrz 2012, o 10:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-09-16T10:10:26+01:00</updated>
<published>2012-09-16T10:10:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15238#p15238</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15238#p15238"/>
<title type="html"><![CDATA[Re: ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15238#p15238"><![CDATA[
[syntax=c]// str is now something like password?sw=1 or just end of url<br />        if (find_key_val(str,gStrbuf,5,&quot;sw&quot;)){<br />                if (gStrbuf[0]=='0'){<br />                        return(0);<br />                }<br />                if (gStrbuf[0]=='1'){<br />                        return(1);<br />                }<br />                //sw==5 uruchamia lcd<br />                if (gStrbuf[0]=='5'){<br />                        lcd_cmd=5;<br />                        return(5);<br />                }<br />        }[/syntax]<br />No tutaj:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 16 wrz 2012, o 10:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-16T09:54:32+01:00</updated>
<published>2012-09-16T09:54:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15237#p15237</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15237#p15237"/>
<title type="html"><![CDATA[Re: ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15237#p15237"><![CDATA[
<div class="quotetitle">mlekorlz napisał(a):</div><div class="quotecontent"><br />Funkcja find_key_val działa włączając diodę więc powinna także nadać zmiennej lcd_cmd wartość &quot;5&quot; i przejść do:<br /></div><br />No ale gdzie masz w tej funkcji nadawanie wartości zmiennej lcd_cmd ??? ja nie widzę - a piszesz że powinna - no to jak to jest ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 wrz 2012, o 09:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-09-16T09:47:39+01:00</updated>
<published>2012-09-16T09:47:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15236#p15236</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15236#p15236"/>
<title type="html"><![CDATA[Re: ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15236#p15236"><![CDATA[
Nie jest to gotowiec z tuxa do obsługi wyświetlacza gdyż tak jak pisałem tylko posiłkuje się gotowymi funkcjami w nim zawartym i dopisuje je do stosu z książki(który w sumie też jest z tuxa;))<br />Funkcja find_key_val działa włączając diodę więc powinna także nadać zmiennej lcd_cmd wartość &quot;5&quot; i przejść do:<br />[syntax=c]if (lcd_cmd==5){<br />                lcd_cls();<br />                        if (find_key_val(str,gStrbuf,5,&quot;l1&quot;)){<br />                                lcd_str(&quot;aaa&quot;); //test czy w ogole odnajduje &quot;l1&quot;<br />                                urldecode(gStrbuf);<br />                        lcd_str(gStrbuf);<br />                        }<br />                        if (find_key_val(str,gStrbuf,5,&quot;l2&quot;)){<br />                                lcd_locate(0,1);<br />                        urldecode(str);<br />                        lcd_str(str);<br />                    }<br />        }[/syntax]<br />I jeśli już nie wypisywać wartości &quot;str&quot; to chociaż wypisać string &quot;aaa&quot; a nie wiem dlaczego się tak nie dzieje.<br />Kod funkcji find_key_val:<br />[syntax=c]uint8_t find_key_val(char *str,char *strbuf, uint8_t maxlen,char *key)<br />{<br />        uint8_t found=0;<br />        uint8_t i=0;<br />        char *kp;<br />        kp=key;<br />        while(*str &amp;&amp;  *str!=' ' &amp;&amp; *str!='\r' &amp;&amp; found==0){<br />                if (*str == *kp){<br />                        // At the beginning of the key we must check<br />                        // if this is the start of the key otherwise we will<br />                        // match on 'foobar' when only looking for 'bar', by andras tucsni<br />                        if (kp==key &amp;&amp;  ! ( *(str-1) == '?' || *(str-1) == '&amp;' ) ) goto NEXT;<br />                        kp++;<br />                        if (*kp == '\0'){<br />                                str++;<br />                                kp=key;<br />                                if (*str == '='){<br />                                        found=1;<br />                                }<br />                        }<br />                }else{<br />                        kp=key;<br />                }<br />NEXT:<br />                str++;<br />        }<br />        if (found==1){<br />                // copy the value to a buffer and terminate it with '\0'<br />                while(*str &amp;&amp;  *str!=' ' &amp;&amp; *str!='\r' &amp;&amp; *str!='&amp;' &amp;&amp; i&lt;maxlen-1){<br />                        *strbuf=*str;<br />                        i++;<br />                        str++;<br />                        strbuf++;<br />                }<br />                *strbuf='\0';<br />        }<br />        // return 1 if found (the string in strbuf might still be an empty string)<br />        // otherwise return 0<br />        return(found);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 16 wrz 2012, o 09:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-15T23:05:13+01:00</updated>
<published>2012-09-15T23:05:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15230#p15230</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15230#p15230"/>
<title type="html"><![CDATA[Re: ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15230#p15230"><![CDATA[
ale to jest jakiś kod z tux chyba tak ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 wrz 2012, o 23:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlekorlz]]></name></author>
<updated>2012-09-15T20:36:18+01:00</updated>
<published>2012-09-15T20:36:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15227#p15227</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15227#p15227"/>
<title type="html"><![CDATA[ATB-ETH + HD44780 - Problem z wyświetlaniem znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1545&amp;p=15227#p15227"><![CDATA[
Na wstępie zaznaczę, że stos z książki działa a posiłkując się kodem z tuxgraphics uruchomiłem już sterowanie diodą LED. Teraz przyszedł czas na LCD gdzie również posiłkuję się kodem z w/w strony.<br />Do uruchomienia wyświetlacza używam biblioteki z książki i ten również działa, podczas inicjalizacji wypisując to co mu kazałem.<br />Tak więc zaczynam:<br />Na atmedze znajduje się stronka która wysyła do URLa polecenia dla wyświetlacza:<br />[syntax=c]plen=fill_tcp_data_p(buf,plen,PSTR(&quot;&lt;hr&gt;&lt;br&gt;&lt;form METHOD=get action=\&quot;&quot;));<br />                plen=fill_tcp_data_p(buf,plen,PSTR(&quot;\&quot;&gt;\n&lt;input type=hidden name=sw value=5&gt;\n&lt;input size=20 type=text name=l1&gt;\n&lt;br&gt;&lt;input size=20 type=text name=l2&gt;\n&quot;));<br />                plen=fill_tcp_data_p(buf,plen,PSTR(&quot;\&quot;&gt;\n&lt;br&gt;&lt;input type=submit value=\&quot;write to LCD\&quot;&gt;&lt;/form&gt;\n&quot;));<br />[/syntax]<br />Co po wpisaniu tekstu w formularzu powoduje wyświetlenie w przeglądarce adresu:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">http://192.168.0.110/mleko/?sw=5&amp;l1=linia1&amp;l2=linia2</div><br />Więc wszystko moim zdaniem ok.<br />Do wysłania tekstu dla wyświetlacza używam funkcji:<br />[syntax=c]// str is now something like password?sw=1 or just end of url<br />        if (find_key_val(str,gStrbuf,5,&quot;sw&quot;)){<br />                if (gStrbuf[0]=='0'){<br />                        return(0);<br />                }<br />                if (gStrbuf[0]=='1'){<br />                        return(1);<br />                }<br />                //sw==5 uruchamia lcd<br />                if (gStrbuf[0]=='5'){<br />                lcd_cmd=5;<br />                return(5);<br />                }<br />        }<br />if (lcd_cmd==5){<br />        lcd_cls();<br />        if (find_key_val(str,gStrbuf,5,&quot;l1&quot;)){<br />        lcd_str(&quot;aaa&quot;); //test czy w ogole odnajduje &quot;l1&quot;<br />        urldecode(gStrbuf);<br />                lcd_str(gStrbuf);<br />        }<br />        if (find_key_val(str,gStrbuf,5,&quot;l2&quot;)){<br />        lcd_locate(0,1);<br />                urldecode(str);<br />                lcd_str(str);<br />            }<br />        }<br /><br />        return(-3);<br />}<br />[/syntax]<br />w/w kod doskonale spisuje się przy włączaniu/wyłączaniu led więc nadanie zmiennej lcd_cmd wartości &quot;5&quot; powinno wypisać na wyświetlaczu tekst ale tak się niestety nie dzieje.<br />Próbowałem, co widać w kodzie, zczytywać gStrbuf jak i str, niestety bezskutecznie.<br />Nie pojawia się na nim także string &quot;aaa&quot; co oznacza jakby w ogóle nie znajdował w URLu zapisu &quot;l1=linia1&quot;<br /><br />Proszę o podpowiedź gdzie ewentualnie popełniam błąd bo już skończyły mi się pomysły...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=245">mlekorlz</a> — 15 wrz 2012, o 20:36</p><hr />
]]></content>
</entry>
</feed>