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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-10-23T19:48:51+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=31&amp;t=4559&amp;mode</id>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-10-23T19:48:51+01:00</updated>
<published>2013-10-23T19:48:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54100#p54100</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54100#p54100"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54100#p54100"><![CDATA[
Co masz na myśli mówiąc <div class="quotetitle">GwynBleidD napisał(a):</div><div class="quotecontent"><br />(dlaczego używasz '0' zamiast '\0'?)<br /></div> ramka z urządzenia jest nie zmienna, co do początkowych 0 i 4 to jedyne co można ustawić jako &quot;nagłowek&quot; rozróżniający dwie zmienne, masę i tarę innej opcji nie ma.<br />Co prawda kiedyś dawien, dawna, miałem podobny problem, a jak zacząłem grzebać w bibliotekach Mirka właśnie pod kątem wykrywania ilości danych dostałem tylko burę od Mirka to sobie odpuściłem grzebanie w bibliotece. No bo gdzie indziej, można by ograniczyć długość bufora, czy sprawdzać dokładnie ile przychodzi danych jak nie w samej bibliotece. Gdyż to ona rozdziela moją ramkę na dwie linijki.<br />U Mirka jest niby wykrywanie kolejnych linii, ale niestety to sie nie sprawdzi, jedynie co mi przychodzi na myśl to liczenie przylatujących znaków (bo zawsze jest <br /><br />PS. w sumie głąb ze mnie bo wiedziałem, że wróci ten problem jak bumerang.<br /><br />Tak wygląda ramka<br />30<br />30<br />30<br />31<br />2E<br />35<br />30<br />35<br />0D<br />34<br />30<br />30<br />30<br />2E<br />31<br />35<br />38<br />0D<br />0A<br /><br />Czyli wychodzi na to, że jest zawsze 8 bajtów, nie licząc kodów rozdzielających linie.<br />Z tym, że interesujące jest to, że j/w już pisałem jeżeli zrobimy przekazywanie uart0 to uart1 czyli to co przylatuje na uart0 idzie na uart1, to nie ma błędów transmisji, mimo to że bufory dla uart0 i 1 są parzyste, a jak widać całkowita ilość bajtów dla uartów nie, chociaż w sumie analizując to co parsują biblioteki Mirka już na samym poziomie odbierania z bufora sprzętowego, tak naprawdę dostajemy tylko zapisywane jest tylko te 16bajtów bez kodów CR i LF<br /><br />HA, rozgryzłem, to nie debouce, czy moja część softu, to LCD po i2c miesza w sofcie, po wywaleniu obsługi LCD nic się nie wykrzacza.<br /><br />PS. coś się ewidentnie kaszani podczas obsługi SuperDebounce, tj. wpływa ona jakoś na błędne interpretowanie danych nadlatujących z bufora. Bo do puki nie nacisnę klawisza, dane przelatują bez zakłóceń <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 23 paź 2013, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-10-23T14:10:42+01:00</updated>
<published>2013-10-23T14:10:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54066#p54066</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54066#p54066"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54066#p54066"><![CDATA[
Hahaha, haha, ha, h..... <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />no właśnie próbuję coś urzeźbić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br /><br />tj.<br />coś na zasadzie sizeof(mybuf)==ilość bajtów w ramce, ale nie bardzo mi to wychodzi<br /><br />Dokładniej mówiąc, nie bardzo mam pomysł jak sprawdzić że w mybuf jest właściwa ilośc bajtów, bo w sumie to powinno wystarczyć.<br /><br />No bo co tak naprawdę dostajemy w mybuf? no dostajemy wskaźnik na bufor gdzie bufor, jest zapełniany przez obsługę zdarzenia tak w uproszczeniu, no i co, przylatuje mi pierwsza część <br />0000,279CR4000,771CRLF, gdzie  if(*mybuf++ == '0') na dzieńdobry odrzuca mi po pierwsze, pierwsze zero, potem tylko gdy pierwsze 0 to następuje memcpy itp.<br />Nie rozumiem tylko dlaczego &quot;przecieka&quot; nie właściwa ramka? z wagi zawsze przychodzi prawidłowa (sprawdzałem to), same biblioteki twoje Mirku też działają prawidłowo, bo jeżeli wrzucić do obsługi zdażenia ot wysyłanie po prostu na drugiego UARTA też zawsze przechodzi prawidłowa ramka. Coś się dzieje po drodze u mnie na tych &quot;cholernych&quot; ifach, program sie nie wykrzacza, z przepełnianiem bufora przez złe korzystanie z wskaźników już sobie poradziłem, tylko dla czego if puszcza te dodatkowe &quot;400&quot;?<br /><br />strlen(mybuf) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<p>Statystyki: Napisane przez Gość — 23 paź 2013, o 14:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-23T14:03:18+01:00</updated>
<published>2013-10-23T14:03:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54063#p54063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54063#p54063"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54063#p54063"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />PS. Jest jakiś sposób na &quot;dropowanie&quot; niewłaściwych ramek?<br /></div><br /><br />Pewnie, że jest - tylko trzeba go sobie zrobić ... a ty na siłę od razu wrzucasz WSZYSTKO co przylatuje do bufora ... i dlatego masz kaszaneczkę ....<br /><br />Najpierw panie trzeba sparsować bufor, sprawdzić co w nim jest, a jak dane się zgadzają to dopiero wtedy te właściwe dane BACH i do memcpy() <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> — 23 paź 2013, o 14:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-10-23T14:02:39+01:00</updated>
<published>2013-10-23T14:02:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54062#p54062</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54062#p54062"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54062#p54062"><![CDATA[
W sumie wzorowałem się na <br /><br />[syntax=c]void copy_pgm_to_ram( void ) {<br />memcpy_P( &amp;ram_cfg, &amp;pgm_cfg, sizeof(ram_cfg) );<br />}[/syntax]<br />stąd ampersand.<br /><br />Nie wiem czy dobrze rozumiem, ale na jedno w sumie wychodzi przy zmiennej globalnej, i użycie w moim wypadku &amp;pomiar.masa to takie trochę masło maślane <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez Gość — 23 paź 2013, o 14:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2013-10-23T13:43:41+01:00</updated>
<published>2013-10-23T13:43:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54059#p54059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54059#p54059"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54059#p54059"><![CDATA[
A czy nie powinno być czasem bez operatora &amp;pomiar.masa<br />czyli tak:<br />memcpy(pomiar.masa, mybuf, sizeof(pomiar.masa));<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 23 paź 2013, o 13:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-10-23T12:56:46+01:00</updated>
<published>2013-10-23T12:56:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54052#p54052</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54052#p54052"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54052#p54052"><![CDATA[
Pierwsza zmiana, definicja <br />[syntax=c]typedef struct{<br />uint8_t TaraZn;<br />uint16_t TaraRs;<br />uint8_t MasaZn;<br />uint16_t MasaRs;<br />char masa&#91;10&#93;;<br />} WAGA;[/syntax]<br /><br />[syntax=c]void czytaj_dane_z_uart1( char * mybuf ) {<br /><br />char *TaraZnacz;<br />char *TaraReszta;<br /> if(*mybuf++ == '0'){// Masa<br />memcpy(&amp;pomiar.masa, mybuf, sizeof(pomiar.masa));<br />lcd_locate(0,7);<br />lcd_str(pomiar.masa);<br />wyswietl(mybuf);<br /><br />}<br />else {<br />lcd_locate(1,7);// Tara<br />lcd_str(pomiar.masa);<br />TaraZnacz = strtok_r(mybuf, &quot;.&quot; , &amp;TaraReszta);<br />pomiar.TaraZn = atoi(TaraZnacz);<br />pomiar.TaraRs = atoi(TaraReszta);<br />if ( (pomiar.TaraZn==0) &amp;&amp; (pomiar.TaraRs==0) )TARA_LED_OFF;<br />else TARA_LED_ON;<br />}<br />}[/syntax]<br /><br />Czyli memcpy(&amp;pomiar.masa, mybuf, sizeof(pomiar.masa));<br />działa, co prawda co któryś raz dostaje głupoty hmmmm jak by  if(*mybuf++ == '0') nie za każdym razem wyłapywał z przylatujących po uarcie<br />0000.279CR4000.770CRLF to co jest po pierwszym zero, bo pokazuje się czasem 000,279400 na uarcie i na LCD, czyli ewidentnie jeszcze gdzieś coś po drodze się kaszani<br /><br />PS. Jest jakiś sposób na &quot;dropowanie&quot; niewłaściwych ramek?<p>Statystyki: Napisane przez Gość — 23 paź 2013, o 12:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-10-23T12:02:52+01:00</updated>
<published>2013-10-23T12:02:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54042#p54042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54042#p54042"/>
<title type="html"><![CDATA[Re: Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54042#p54042"><![CDATA[
czy ty nie robisz tu jakiejś strasznie niebezpiecznej rzeczy ? która może ci przy okazji &quot;przeorać wszystko&quot; jak radziecki traktor odrzutowy ?<br /><br />[syntax=c]memcpy( &amp;pomiar.masa, &amp;mybuf, sizeof(mybuf) );[/syntax]<br /><br />czy jesteś pewien że rozmiar twojego mybuf jest DOKŁADNIE równy z ....<br /><br />nie jeszcze gorzej .... <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> myślałem że ty przekopiowujesz całą strukturę a tymczasem ty  bez żadnego hmmmm no zastanowienia wkopiowujesz .... no właśnie żeby jeszcze wiadomo było co ? <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ... u ciebie w strukturze jest<br /><br />[syntax=c]char *masa;[/syntax]<br /><br />więc teraz spróbuj wytłumaczyć co w ogóle wg ciebie ma robić ta linijka ? tzn czego ty od niej oczekujesz ?<br /><br />i pomyśl co ona tak naprawdę robi ? to cię ciarki przejdą po plecach <br /><br />Podpowiedź: przecież u ciebie masa w tej strukturze to NIE ZAINICJALIZOWANY wskaźnik .... więc jak myślisz gdzie lecą dane po tej operacji memcpy() ??? tym bardziej, że operatorem &amp; jeszcze na dodatek próbujesz pobrać wskaźnik z tego wskaźnika <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 paź 2013, o 12:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-10-23T10:06:40+01:00</updated>
<published>2013-10-23T10:06:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54021#p54021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54021#p54021"/>
<title type="html"><![CDATA[Problem z widocznością zmiennych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4559&amp;p=54021#p54021"><![CDATA[
Od kilku dni walczę z widocznością zmiennych i w sumie nic nie wymyśliłem.<br />Mam globalną strukturę<br />w common.h<br />[syntax=c]typedef struct{<br />uint8_t TaraZn;<br />uint16_t TaraRs;<br />uint8_t MasaZn;<br />uint16_t MasaRs;<br />char *masa;<br />} WAGA;[/syntax]<br />w common.c<br />[syntax=c]WAGA pomiar;[/syntax]<br /><br />Następnie w common.c są funkcje które obsługują dane odebrane z UARTA przez system zdarzeń czyli<br />[syntax=c]void czytaj_dane_z_uart1( char * mybuf ) {<br /><br />char *TaraZnacz;<br />char *TaraReszta;<br /> if(*mybuf++ == '0'){// Masa<br />memcpy(&amp;pomiar.masa, &amp;mybuf, sizeof(mybuf));<br />uart_puts(0, pomiar.masa);<br />uart_puts(0,&quot;\r\n&quot;);<br />lcd_locate(0,7);<br />lcd_str(pomiar.masa);<br />wyswietl(mybuf);<br /><br />}<br />else {<br />lcd_locate(1,7);// Tara<br />lcd_str(pomiar.masa);<br />TaraZnacz = strtok_r(mybuf, &quot;.&quot; , &amp;TaraReszta);<br />pomiar.TaraZn = atoi(TaraZnacz);<br />pomiar.TaraRs = atoi(TaraReszta);<br />if ( (pomiar.TaraZn==0) &amp;&amp; (pomiar.TaraRs==0) )TARA_LED_OFF;<br />else TARA_LED_ON;<br />}<br />}<br /><br />// Funkcja Parsująca dane na potrzeby wyświetlacza LED<br />void wyswietl(char *buf){<br />char *cznacz;<br />char *creszta;<br />cznacz = strtok_r(buf, &quot;.&quot;, &amp;creszta);<br />uint8_t znacz = atoi(cznacz);<br />uint16_t reszta = atoi(creszta);<br />cy&#91;3&#93; = reszta %10; reszta/=10;<br />cy&#91;2&#93; = reszta %10; reszta/=10;<br />cy&#91;1&#93; = reszta %10;<br />cy&#91;0&#93; = (znacz)+20;<br />//jedno = time % 10; time /= 10;<br />//dzies = time % 10; time /= 10;<br />//setki = time % 10;<br />}<br /><br />void wyslij_mase (void){<br />char baba = 0;<br />switch(key_number){<br />case 1:baba = 'A'; break;<br />case 2: baba = 'B'; break;<br />case 4: baba = 'C'; break;<br />case 8: baba = 'D'; break;<br />}<br /><br />uart_putc(0,baba);<br />uart_puts(0,pomiar.masa);<br />lcd_locate(1,0);<br />lcd_str(pomiar.masa);<br />uart_puts(0,&quot;\r\n&quot;);<br />}[/syntax]<br /><br />Niestety pomiar.masa, jest już niewidoczne w funkcji wysli_mase, tzn, jest to pusta zmienna (same zera).<br />Gdzie w wcześniejszych funkcjach wyświetlanie/przeliczanie etc. działa bez zarzutu, czyli po<br />memcpy(&amp;pomiar.masa, &amp;mybuf, sizeof(mybuf));<br />operujemu na pomiar.masa no i dlaczego po wyjściu z funkcji czytaj_dane_z_uart1 przestaje istnieć wartość w tej zmiennej?<p>Statystyki: Napisane przez Gość — 23 paź 2013, o 10:06</p><hr />
]]></content>
</entry>
</feed>