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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-01-12T07:03:46+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=5517&amp;mode</id>
<entry>
<author><name><![CDATA[repro]]></name></author>
<updated>2014-01-12T07:03:46+01:00</updated>
<published>2014-01-12T07:03:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64697#p64697</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64697#p64697"/>
<title type="html"><![CDATA[Re: STRINGI, wykluczanie tablicy na podstawie elementów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64697#p64697"><![CDATA[
Dziękuję za odpowiedź. Zapomniałem wspomnieć, że w taki sposób także próbowałem.<br />[syntax=c]void analizuj_uart(char *pbuff)<br />{<br />lcd_cls();<br /><br />char cyfry&#91;&#93; = {'0','1','2','3','4','5','6', '7', '8', '9'};<br /><br />char *wsk_cmd;<br />char *wsk_params;<br /><br />temp&#91;15&#93; = '\0';<br />char cmd&#91;8&#93;;<br />cmd&#91;7&#93; = '\0';<br />char params&#91;6&#93;;<br />params&#91;5&#93; = '\0';<br /><br /><br /><br />strncpy(temp, pbuff, sizeof(temp)- 1); // kopiuj z bufora do tempa<br /><br /><br />wsk_cmd = strtok(temp, &quot; ,-&quot;); // wyrzuc tokena pod wskaznik<br />strncpy(cmd, wsk_cmd, sizeof(cmd)-1); // skopiuj tokedna spod wskaznika do tablicy<br />while( wsk_cmd != NULL)<br />{<br /><br />if((*wsk_cmd &gt;='0' &amp;&amp; *wsk_cmd &lt;='9')) // &#91;color=#FF0000&#93; ;&#91;/color&#93; tu byl pierwszy blad<br />{<br /><br />strncpy(params, wsk_cmd, sizeof(params)-1); //skopiuj kolejnego tokena do drugiej tablicy<br /><br />lcd_cls();<br /><br /><br />}<br />wsk_cmd = strtok(NULL, &quot; ,-&quot;);<br /><br />};<br /><br />lcd_locate(1,0);<br />lcd_str(params);<br /><br /><br />lcd_locate(0,0);<br />lcd_str(cmd);<br /><br />}[/syntax]<br />Niestety, ale dalej do tablicy params kopiuje mi każdy znak, a chciałbym, by przechodziły tylko cyfry. Odnoszę się do adresu używając nazwy wsk, a *wsk do zmiennej pod tym adresem. Nie rozumiem dlaczego, dalej przechodzą znaki z poza przedziału...<br /><strong>EDIT:</strong> funkcja strpbrk działała dość sprawnie, ale wystarczy poprzeplatać cyfry z innymi znakami i nie odfiltrowuje <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />ps. proszę wybaczyć mi błędy, od wczoraj dłubie przy książkach i w kodzie, by przypomnieć i nadrobić zaległości <img src="https://forum.atnel.pl/images/smilies/icon_neutral.gif" alt=":|" title="Średnio zadowolony" /><br /><strong>EDIT2:</strong> nie kopiuje teraz każdego znaku, ale pokazują się &quot;krzaczki&quot; na ekranie. Wystarczy wpisać dwie pierwsze cyfry, a potem dowolne znaki i tablica przechodzi do wyświetlenia na ekran lcd...kombinuję dalej <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><strong>EDIT3:</strong> Doszedłem do wniosku,że w moim programie warunek sprawdza, tylko pierwszy znak tokenu, a potem kopiuje wszystko na ślepo. Jak zrobić, by sprawdzał wszystkie znaki, a nie tylko pierwszy, które będą kopiowane do tablicy params ?<br /><strong>EDIT4</strong>: Muszę każdy element po kolei sprawdzać, nie wiedziałem, jak to zrobić zaraz po funkcji strtok, więc wpakowałem to wszystko w tablicę, a następnie sprawdzałem element po elemencie, czy należy do przedziału...Najprostsze rozwiązanie<br />Rozgryzłem, jaki błąd robiłem...programik ładnie działał o 11:30 i potem pozmieniałem zmienne. Przestał działać nie mogłem dojść, co nie tak. Winna była funkcja, która po przejściu warunku wyświetlała całą tablicę. Najpierw przejechać całą tablicę, a na koniec wyświetlić <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=613">repro</a> — 12 sty 2014, o 07:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-01-12T06:30:27+01:00</updated>
<published>2014-01-12T06:30:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64696#p64696</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64696#p64696"/>
<title type="html"><![CDATA[Re: STRINGI, wykluczanie tablicy na podstawie elementów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64696#p64696"><![CDATA[
<div class="quotetitle">repro napisał(a):</div><div class="quotecontent"><br />Myślałem, że będę porównywać to, co znajdzie się pod adresem wskaźnika<br /></div><br /><br />No ale tu jakby brakuje troszkę koledze podstaw właśnie z niebieskiej książki <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />jeśli myślałeś o porównywaniu tego co znajdzie się POD adresem wskaźnika to chyba <strong><span style="color: #0040FF">*wsk_cmd</span></strong> ? zgadza się ?<br /><br />[syntax=c]if ( ( *wsk_cmd &gt;= '0' &amp;&amp; *wsk_cmd &lt;= '9') )[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 sty 2014, o 06:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[repro]]></name></author>
<updated>2014-01-12T05:44:44+01:00</updated>
<published>2014-01-12T05:44:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64695#p64695</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64695#p64695"/>
<title type="html"><![CDATA[STRINGI, wykluczanie tablicy na podstawie elementów]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=5517&amp;p=64695#p64695"><![CDATA[
Witam po dłuższej przerwie. Moja praca inż. to dla mnie zmora, bo programowanie idzie mi strasznie topornie. Szybko się zniechęcam, odkładam i zapominam. Robię już n-te podejście do tematu.<br />Skorzystałem z zielonej książki, która była mi bardzo pomocna. Chodzi o transmisje ASCII. Niestety nie mam czasu i nie mogę skorzystać z komend Pana Mirosława, więc postanowiłem napisać swoje. Doszedłem do miejsca, gdzie tokeny zapisuję do dwóch tablic, ale chcę teraz kontrolować, co jest wpisywane do tablicy i jeśli znajdzie się chociaż jeden nie pasująca znak to tablica jest odrzucana. <br />[syntax=c]void analizuj_uart(char *pbuff)<br />{<br />lcd_cls();<br /><br />//char cyfry&#91;&#93; = {'0','1','2','3','4','5','6', '7', '8', '9'};<br /><br />char *wsk_cmd;<br /><br />temp&#91;15&#93; = '\0'; //zabezpieczenie<br />char cmd&#91;8&#93;;<br />cmd&#91;7&#93; = '\0'; //zabezpieczenie<br />char params&#91;6&#93;;<br />params&#91;5&#93; = '\0';  //zabezpieczenie<br /><br /><br />strncpy(temp, pbuff, sizeof(temp)- 1); // kopiuj z bufora do tempa<br /><br /><br />wsk_cmd = strtok(temp, &quot; ,-&quot;); // wyrzuc tokena pod wskaznik<br />strncpy(cmd, wsk_cmd, sizeof(cmd)-1); // skopiuj token spod wskaznika do tablicy<br />while( wsk_cmd != NULL)<br />{<br />                /*tu kontrola*/<br />strncpy(params, wsk_cmd, sizeof(params)-1); //skopiuj kolejnego tokena do drugiej tablicy<br /><br />wsk_cmd = strtok(NULL, &quot; ,-&quot;);<br />};<br /><br /><br />}[/syntax]<br />Dane nadlatują z UARTA, a więc do tablicy <strong>cmd </strong>zapisany jest pierwszy token, a do tablicy <strong>params</strong> drugi. Chciałbym, żeby np program odrzucał dla tablicy params tokena w takiej postaci 1W3B, czyli żeby zawierał znaki od 0 do 9. Próbowałem wstawiać przedział,ale nie wiem, jak mam kontrolować to, co jest wrzucane do tablicy params. <br />Przed funkcją:<br />[syntax=c]strncpy(params, wsk_cmd, sizeof(params)-1); //skopiuj kolejnego tokena do drugiej tablicy[/syntax]<br /><br />Dałem takie wyrażenie warunkowe:<br />[syntax=c]if ( ( wsk_cmd &gt;= '0' &amp;&amp; wsk_cmd &lt;= '9) )[/syntax]<br /><br />Myślałem, że będę porównywać to, co znajdzie się pod adresem wskaźnika, czyli znaki,które nadlatują...Wyskakuje mi ostrzeżenie, że próbuję porównać dwa różne typy.(porównanie między wskaznikiem, a typem int)<br /><a href="https://imageshack.com/i/0j46itj"  class="postlink"><img src="http://imagizer.imageshack.us/v2/xq90/19/46it.jpg" alt="Obrazek" /></a><br />Z góry dziękuję za udzielone wsparcie.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=613">repro</a> — 12 sty 2014, o 05:44</p><hr />
]]></content>
</entry>
</feed>