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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4568&amp;mode</id>
<entry>
<author><name><![CDATA[pawlo123]]></name></author>
<updated>2013-10-23T21:37:21+01:00</updated>
<published>2013-10-23T21:37:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4568&amp;p=54128#p54128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4568&amp;p=54128#p54128"/>
<title type="html"><![CDATA[Problem z odczytem danych z karty SD w powiązaniu z terminal]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4568&amp;p=54128#p54128"><![CDATA[
Witam wszystkich, <br />mam następujący problem, mam bibliotekę do odczytywania danych z karty SD tj. konkretnego pliku *csv który jest wygenerowany przez inny program. Biblioteka działa ale w pewnym zakresie ponieważ gdy mam wpisaną funkcję w main.c tj. uart_put_float(SD_odczytaj_kat(1,1,2013,14,20,0),2); bez dołączenia biblioteki kartaSD.h za pomocą dyrektywy #include &quot;../KartaSD/kartaSD.h&quot; (jest zakomentowana) w bibliotece rs_terminal.c biblioteka odczytuje właściwie dane z karty, natomiast gdy jest dołączona to otrzymuje wartość -1 (to jest return -1 z funkcji SD_odczytaj_kat()) lub napis &quot;NAN&quot; bądź źle odczytaną wartość. Ponadto po wejściu w przez terminal do menu rysuj_menu_odczyt_kata() w obydwu przypadkach otrzymuje złe wartości doczytane z karty SD. Moje pytanie co ja źle robię ?. Z góry dziękuje za pomoc.<br /><br /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 31-05-2013<br /> *      Author: c<br /> */<br />#include&lt;avr/io.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;string.h&gt;<br />#include&lt;util/delay.h&gt;<br />#include &lt;stdbool.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#include &lt;stdio.h&gt;<br /><br />.....<br /><br />#include &quot;klawiatura/klawiatura.h&quot;<br />#include &quot;rs232/rs232.h&quot;<br />#include &lt;stdlib.h&gt;<br />#include &quot;RS_Terminal/rs_terminal.h&quot;<br />#include &quot;KartaSD/diskio.h&quot;<br />#include &quot;KartaSD/pff.h&quot;<br />#include &quot;KartaSD/kartaSD.h&quot;<br /><br /><br /><br />int main(void)<br />{<br />USART_Init(__UBRR);//inicjue obsługe transmisji RS<br />lcd_init();//inicjowanie biblioteki LCD -p. Mirosława Kardaś<br />SD_init();//inicjowanie obsługi karty SD<br /><br />sei();<br /><br />register_uart_str_rx_event_callback(uart_get_string);//rejestrowanie funkcji call bac uart_get_sring()<br />rysuj_menu_glowne();<br />uint8_t ctrl_reg = (1&lt;&lt;MASK_FLAG);<br />wyslij_TWI_buf(0xA2, 0,1,&amp;ctrl_reg);<br /><br />/* Obsługa KARTY SD*/<br /><br />uart_put_float(SD_odczytaj_kat(1,1,2013,14,20,0),2);<br /><br /><br />/*Koniec obsługi karty SD*/<br /><br /><br />/*pętla głowna*/<br />while(1)<br />{<br />terminal_wybierz_menu();<br />UART_RX_STRING_EVENT(uart_bufor_string);<br /><br />}<br /><br />/* Koniec pętli głównej */<br />return 0;<br />}[/syntax]<br /><br />[syntax=c]/*<br /> * kartaSD.c<br /> *<br /> *  Created on: 13-10-2013<br /> *      Author: c<br /> */<br /><br />#include &lt;string.h&gt;<br />#include &quot;diskio.h&quot;<br />#include &lt;stdlib.h&gt;<br />#include &quot;pff.h&quot;<br />#include &quot;kartaSD.h&quot;<br />#include &quot;../RS232/rs232.h&quot;<br /><br />FATFS fs;/*Obiekt systemu plików*/<br />DIR Dir;/*obiekt katalogu*/<br />FILINFO Fno;/*Informacje o pliku*/<br />BYTE res;/*zmienna okreslajaca status funkcji*/<br />WORD s1;/*Licznik ilości bajtów odczytanych z pliku*/<br /><br />/*Funkcja inicjujaca obsluge  karty SD*/<br />void SD_init(void)<br />{<br />/*Ustawienia linii portów*/<br />DDRB |=(1&lt;&lt;CS)|(1&lt;&lt;MOSI)|(1&lt;&lt;SCK)|(1&lt;&lt;CS);<br />PORTB |=(1&lt;&lt;CS);<br />SPCR |=(1&lt;&lt;SPE)|(1&lt;&lt;MSTR);<br />/*koniec ustawień lini portów*/<br />}<br /><br />/*Funkcja odczytujaca kat paneli o konkretnym czasie*/<br />float SD_odczytaj_kat(int dzien, int miesiac, int rok, int godzina, int minuta, int sekunda)<br />{<br />file_name=&quot;plik001.csv&quot;;//nazwa pliku na karcie<br />res = disk_initialize();//inicjowanie karty SD<br />char *reszta;<br />if(res==FR_OK)<br />{<br />res = pf_mount(&amp;fs);//montowanie napędu (karty)<br />if(res==FR_OK)<br />{<br />res = pf_open(file_name);//otwieramy konkretny plik<br />if(res==FR_OK)<br />{<br />do<br />{<br />res = pf_read(bufor,sizeof(bufor),&amp;s1); //odczyt danych z pliku do bufora<br />if(res==FR_OK)<br />{<br />bufor&#91;s1+1&#93;=0;//dodajemy na koniec bufora 0 lub dowolny znak jao separator niejest to konieczne<br />/*Warunek sprawdzający czy przekazane argumenty czasu znajdują sie w odczytanej linii danych z pliku umieszczonego na karcie SD*/<br />if((dzien==(atoi(strtok_r(bufor,&quot;;&quot;,&amp;reszta))))&amp;&amp;(miesiac==(atoi(strtok_r(NULL,&quot;;&quot;,&amp;reszta))))&amp;&amp;(rok==(atoi(strtok_r(NULL,&quot;;&quot;,&amp;reszta))))&amp;&amp;(godzina==(atoi(strtok_r(NULL,&quot;;&quot;,&amp;reszta))))&amp;&amp;(minuta==(atoi(strtok_r(NULL,&quot;;&quot;,&amp;reszta))))&amp;&amp;(sekunda==(atoi(strtok_r(NULL,&quot;;&quot;,&amp;reszta)))))<br />//uart_put_string(strtok_r(NULL,&quot;;&quot;,&amp;reszta));<br />return atof(strtok_r(NULL,&quot;;&quot;,&amp;reszta));<br /><br />} else uart_put_string(&quot;Bład odczytu pliku&quot;);<br />} while(sizeof(file_name)&lt;s1);//iteracja dopoki nie zakonczy się plik czyli rozmiar pliku mniejszy od ilości odczytanych danych<br />} else uart_put_string(&quot;Blad otwarcia pliku&quot;);<br />}else uart_put_string(&quot;Nie można zamontowac dysku&quot;);<br /><br />} else uart_put_string(&quot;Blad inicjowania dysku&quot;);<br />return -1;<br />}<br />/*Koniec funkcji odczytujacej kat paneli o konkretnej dacie z karty SD*/[/syntax]<br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br /><br />#include &quot;rs_terminal.h&quot;<br />#include &quot;../RS232/rs232.h&quot;<br />#include &quot;../Hall/hall.h&quot;<br />#include &quot;../PrzetwornikADC/adc.h&quot;<br />#include &quot;../ZegarRTC/zegar.h&quot;<br />//#include &quot;../KartaSD/kartaSD.h&quot;<br />#include &lt;stdbool.h&gt;<br />#include &lt;string.h&gt;<br /><br /><br /><br />...<br /><br /><br /><br />void rysuj_menu_odczyt_kata()<br />{<br />char *reszta9;<br />terminal_cls(0);<br />terminal_3atrybuty(0,Cyan,Black);<br />terminal_locate(2,5); uart_put_string(&quot;Menu odczyt kata&quot;);<br />terminal_locate(3,5); uart_put_string(&quot;Podaj dane &#91;d,m,r,g,m,s&#93;&quot;);<br />do <br />{<br />if(ascii_line)<br />{<br />terminal_locate(4,5);uart_put_string(&quot;Kat: &quot;);<br />uart_put_float(SD_odczytaj_kat(atoi(strtok_r(uart_get_string(uart_bufor_string),&quot;,&quot;,&amp;reszta9)),atoi(strtok_r(NULL,&quot;,&quot;,&amp;reszta9)),atoi(strtok_r(NULL,&quot;,&quot;,&amp;reszta9)),atoi(strtok_r(NULL,&quot;,&quot;,&amp;reszta9)),atoi(strtok_r(NULL,&quot;,&quot;,&amp;reszta9)),atoi(strtok_r(NULL,&quot;,&quot;,&amp;reszta9))),3);<br />terminal_locate(5,5);<br />uart_put_float(1.23,2);<br /><br />}<br />}<br />while(1);<br />rysuj_menu_glowne();<br />}<br />/*Koniec funkcji odczytującej wartosc kata o podanych argumentach j.w.*/<br />#endif[/syntax]<br /><br />//#include &quot;../KartaSD/kartaSD.h&quot; - zakomentowany otrzymuje prawidłowy wynik 9.62 <br /><a href="http://forum.atnel.pl/_obrazki/o/1506/b3749f963fa44260070e5a299840bec6.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1506/b3749f963fa44260070e5a299840bec6.png" alt="Obrazek" /></a><br /><br />blednę pobrane dane po wejściu przez terminal i ich pobraniu (skąd taka duża liczba ??) takie same argumenty <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/1506/c8ed9f764f649f4077b4ba95a1b88474.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1506/c8ed9f764f649f4077b4ba95a1b88474.png" alt="Obrazek" /></a><br /><br />po usunięciu komentarzy przed #include &quot;../KartaSD/kartaSD.h&quot;<br /><a href="http://forum.atnel.pl/_obrazki/o/1506/ba21af9997a7a9641099f7eb8309d1f5.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1506/ba21af9997a7a9641099f7eb8309d1f5.png" alt="Obrazek" /></a><br /><a href="http://forum.atnel.pl/_obrazki/o/1506/7645d2c6a807a1f796d7249d36d34eb7.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1506/7645d2c6a807a1f796d7249d36d34eb7.png" alt="Obrazek" /></a><br /><br /><span style="color: #FF0000">[ proszę przerzucić te obrazki na nasz serwer forum atnel z kociego imageszaka bo niestety zostaną one usunięte - ma kolega na to 1 dzień czasu ok ? - mirekk36]<br /><br />[ a instrukcja jak to zrobić jest widoczna w każdym dziale: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic44.html" >topic44.html</a><!-- l --> ]</span><br /><br />OK poprawione <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Proszę o pomoc w tym temacie lub jakieś wskazówki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1506">pawlo123</a> — 23 paź 2013, o 21:37</p><hr />
]]></content>
</entry>
</feed>