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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-04-12T20:10:17+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=18138&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-04-12T20:10:17+01:00</updated>
<published>2017-04-12T20:10:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18138&amp;p=186971#p186971</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18138&amp;p=186971#p186971"/>
<title type="html"><![CDATA[Re: AT+WSCAN, parsowanie dostępnych sieci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18138&amp;p=186971#p186971"><![CDATA[
<div class="quotetitle">jacky_cy napisał(a):</div><div class="quotecontent"><br />Czy w ogóle zapis sieci do tablicy dwuwymiarowej to dobry pomysł.<br /></div><br />Tablice wielowymiarowe to najczęściej nietrafiony pomysł - szczególnie, że w języku C mamy do dyspozycji struktury i można ładnie przygotować definicję struktury a później zrobić tablicę struktur - i zero potrzeby jakichś tablic wielowymiarowych ... z tego bym z marszu zrezygnował<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />druga sprawa po co zapisywać takie mega nadmiarowe dane stringowe do tablic/struktur? toż jak będzie w okolicy nagle 58 wykrytych sieci to się może nawet ci RAM chlasnąć ...<br /><br />toż można sobie ładnie przygotować typami wyliczeniowymi enum definicje takich danych jak AES, TKIP, AES/TKIP, i tym podobne i do struktury zapisywać jedynie liczbowy typ wyliczeniowy. A co najwyżej nazwę sieci i hasło jako string. Później z typu wyliczeniowego łatwo odtworzyć takie stringi<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 3 minutach ]</span></strong><br /><br />to tak na gorąco co mi przychodzi do głowy i co mogę podpowiedzieć bo nie mam nawet jak teraz takiego kodu sprawdzać<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 kwi 2017, o 20:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacky_cy]]></name></author>
<updated>2017-04-12T19:42:36+01:00</updated>
<published>2017-04-12T19:42:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18138&amp;p=186968#p186968</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18138&amp;p=186968#p186968"/>
<title type="html"><![CDATA[AT+WSCAN, parsowanie dostępnych sieci]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18138&amp;p=186968#p186968"><![CDATA[
Chciałbym poprosić Was o wskazówki odnośnie parsowania danych z modułu wifi232 po wysłaniu komendy AT+WSCAN.<br /><a href="https://obrazkiforum.atnel.pl/4547/56751915c658784b59ce62f190ea5698.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4547/56751915c658784b59ce62f190ea5698.png" alt="Obrazek" /></a><br /><br />Na podstawie funkcji z poradnika zrobiłem funkcję parsującą stringa pomiędzy <br />liczbą (nr kanału) oraz przecinkiem, który jest zaraz po nazwie sieci. Niestety nie wiem co robię źle, ale przecinek po nazwie sieci wyświetla się zawsze, a i czasami dodatkowo do tablicy zapisują się jakieś strzępy np.&quot;AES&quot;, &quot;TKIPAES&quot; <br /><a href="https://obrazkiforum.atnel.pl/4547/ca0bab15119a14404f15bdfaedbb6cdf.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/4547/ca0bab15119a14404f15bdfaedbb6cdf.jpg" alt="Obrazek" /></a><br />Mimo iż ostatni element stringa czyli ten przecinek zeruję.<br />[syntax=c]wpstr-&gt;ssidbuf&#91;ssid_index&#93;&#91;str_end&#93; = 0;[/syntax]<br />ssidbuf[ssid_index][str_end] na pewno jest przecinkiem, bo sprawdziłem wyświetlając na LCD<br /><br />Poniżej funkcja str_parse_ssid:<br />[syntax=c]uint8_t str_parse_ssid (int sign, TPSTR_SSID * wpstr)<br />{<br />static uint8_t idx1;<br />static uint8_t str_end;<br />char mzn = sign;<br />uint8_t mzncon;//zmienna na potrzeby nr kanału<br />uint8_t flag;<br /><br />if(wpstr-&gt;status &lt; 0 || sign &lt; 0){<br />return 0;//jezeli status rowny -1 lub brak znaku &gt; return<br />}<br /><br />if(!wpstr-&gt;status)//jezeli status = 0<br />{<br />mzncon = HexCharToInt(mzn);//konwersja char do uint8_t<br />if(((mzncon&gt;=1)&amp;&amp;(mzncon&lt;15))) flag=1; //pierwszy lancuch 2 znaki - &quot;&lt;nr_kanalu&gt;,&quot;<br />if(flag==1){//zwiekszanie indeksu<br />if(mzn==','){                                //jesli index rowny 2<br />wpstr-&gt;status=1;<br />flag=0;<br />idx1=0;<br />}<br />} else<br />{<br />idx1 = 0;<br />}<br />} else if(wpstr-&gt;status){<br />//jezeli natrafiono na ciag<br />wpstr-&gt;ssidbuf&#91;ssid_index&#93;&#91;idx1++&#93; = mzn;//zapis do bufora znak po znaku<br />if(idx1&gt;16) idx1=0;<br /><br />//sprawdzanie czy jest przecinek<br />if(mzn == ','){<br />if(wpstr-&gt;status==1){<br />str_end = idx1 - 1;<br />}<br />//jezeli natrafiono na ciąg WPA to nie zapisuj<br />if((wpstr-&gt;ssidbuf&#91;ssid_index&#93;&#91;0&#93;=='W') &amp;&amp; (wpstr-&gt;ssidbuf&#91;ssid_index&#93;&#91;1&#93;=='P') &amp;&amp; (wpstr-&gt;ssidbuf&#91;ssid_index&#93;&#91;2&#93;=='A')){ //jeżeli znaleziony ciag to WPA to nie wpisuj do tablicy sieci<br /><br />} else{<br />ssid_index++;<br />}<br />idx1=0;<br />wpstr-&gt;status = -1;//zatrzymujemy wyszukiwanie strumienia<br /><br />wpstr-&gt;ssidbuf&#91;ssid_index&#93;&#91;str_end&#93; = 0;  //zerujemy ostatni znak - przecinek<br /><br />return 1;<br /><br />} else{//jezeli okaze sie ze nie sprawdzamy drugiego lancucha<br />wpstr-&gt;status = 1;<br />}<br />}<br /><br />return 0;<br />}[/syntax]<br /><br />oraz wywołanie w main:<br />[syntax=c]if (str_parse_ssid (cn, &amp;wifiscan))// || cn!=-1)<br />{<br />lcd_locate(0,0);<br />lcd_str(wifiscan.ssidbuf&#91;6&#93;);   //siódma nazwa sieci<br />wifiscan.status=0;<br /><br />}<br />                        if(key(sw_ok, 20, 150) == SHORTPRESS) uart_puts(&quot;AT+WSCAN\r\n&quot;);  // wyslanie komendy at+wscan[/syntax]<br /><br />Bardzo proszę o pomoc / wskazówki co jest nie tak z tą funkcją parsującą. Czy w ogóle zapis sieci do tablicy dwuwymiarowej to dobry pomysł. A może ktoś z Was rozwiązał już kwestie łączenia się z dowolną siecią z poziomu użytkownika? <br />Wielkie dzięki za pomoc i pomysły!!!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4547">jacky_cy</a> — 12 kwi 2017, o 19:42</p><hr />
]]></content>
</entry>
</feed>