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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-26T17:16:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=18&amp;t=8637&amp;mode</id>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2014-09-26T17:16:29+01:00</updated>
<published>2014-09-26T17:16:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96751#p96751</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96751#p96751"/>
<title type="html"><![CDATA[Re: Eclipse i dzielenie projektu na kilka osobnych plików]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96751#p96751"><![CDATA[
Nie wiem czy to ważne, ale w zasadzie plik nagłówkowy *.h (z ang. header) może mieć dowolne rozszerzenie (nie tylko h). Poza tym Kolega Mokrowski dokładnie opisał całą najważniejszą esensję, czyli że przy już na etapie projektowania (ale jeszcze nie programowania) bierze się pod uwagę podział logiczny i funkcjonalny całego projektu. Logiczny mam na myśli to na ile plików (modułów) będzie to podzielone, funkcjonalny czyli jakie funkcje będą posiadały kolejne moduły.<br /><br />Kiedyś Pan prof. Jerzy Grębosz opisywał w &quot;Symfonii C++&quot; taki ciekawy problem (podaję go tutaj jako typowy problem logiczny): <br />Mamy 3 zegary sterujące czujnikami temperatury i chodzi o to, żeby W TYM SAMYM czasie co do milisekundy były odpalone. Jak dobrze zsynchronizować te 3 zegary? -Wprowadza się 4-ty zegar typu master, który posiada JEDEN i ten sam czas i w oparciu o to synchronizowana jest reszta zegarów. Nie wiem, może to co piszę to tutaj może się wydać, że to bzdury, ale PORÓWNANIE problemu wysterowania zegarów i kontroli nad projektem jest takie, że funkcja main.c to taki jakby zegar master, a cała reszta plików (modułów = *.h + *.c) to mogą być albo slave'y, albo kolejne mastery (jednak jako mastery podrzędne w stosunku do głównego mastera main.c). <br /><br /><a href="http://forum.atnel.pl/_obrazki/o/4504/f775bd01fdd62b214c48f56de1f33146.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/4504/f775bd01fdd62b214c48f56de1f33146.jpg" alt="Obrazek" /></a><br /><br />Strzałka na rysunku wskazuje agregację. Grot strzałki wskazuje na plik(i) które są nadrzędne w stosunku do drugiego końca strzałki. Pliki nadrzędne zawierają w sobie dyrektywy include ładujące potrzebne im moduły (funkcje i zmienne). Na żółto zaznaczona funkcja (moduł) nadrzędna - główny kontroler, czyli tzw. master (w ujęciu master/slave). Na zielono zaznaczone są moduły (funkcje) nadrzędne w stosunku do modułów białych (czujników), ale podrzędne w stosunku do głównego kontrolera (głównego mastera).<br />Teraz co do samego języka c stosuje się jeszcze dyrektywy preprocesora (np. ifndef, define etc.), bo dalej gdyby miały wchodzić pojęcia typu klasy, funkcje i zmienne wbudowane, to wtedy wkraczamy w język C++. Tam to już inaczej niektóre sprawy się rozwiązuje (enkapsulacja, dziedziczenie, klasy abstrakcyjnie, etc., typy private, protected, public). Moje osobiste zdanie jest takie, że do celów zbudowania np. sterownika inteligentnego domu sam język avr c spokojnie wystarczy. Należy uważać na dostęp do zmiennych i załączenie odpowiednich nagłówków.<br /><br />Na koniec przepraszam, że używam niezbyt specjalistycznego języka, ale.. cóż.. uważam, że czasem trzeba napisać coś prościej - nawet jeśli jako tłumaczący (czyli ja) mam wyjść na głupka, bo chcąc dobrze mimo wszystko pomyli jakieś pojęcia. Takie ryzyko. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> A na egzaminie nie jestem, tylko na przyjaznym forum, gdzie czy pochwały, czy wytknięcie błędów jest mile widziane. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Pozdrawiam! Jarek<br /><br />P.S. Kolego Moderatorze Jaglarz, chyba nie użyłem odpowiedniej składni do kodu na moim rysunku... Upss.. <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=4504">j23</a> — 26 wrz 2014, o 17:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2014-09-26T11:50:12+01:00</updated>
<published>2014-09-26T11:50:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96735#p96735</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96735#p96735"/>
<title type="html"><![CDATA[Re: Eclipse i dzielenie projektu na kilka osobnych plików]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96735#p96735"><![CDATA[
<div class="quotetitle">Weles napisał(a):</div><div class="quotecontent"><br />//PA4   &lt;INPUT&gt; -NC                           (EXT5-WEJCIE POPRZEZ TRANSOPTOR)<br />         PORTA |= (1&lt;&lt;PA4);                  //PODCIAGNIECIE DO VCC<br />      //PA5   &lt;INPUT&gt; -NC                           (EXT6-WEJCIE POPRZEZ TRANSOPTOR)<br />         PORTA |= (1&lt;&lt;PA5);                  //PODCIAGNIECIE DO VCC<br />      //PA6   &gt;OUTPUT&lt; -PRZEKAZNIK ( DYSTRYBUTOR )<br />         DDRA |=  (1&lt;&lt;PA6);                       //OUTPUT<br />         PORTA |= (1&lt;&lt;PA6);                      //PODCIAGNIECIE DO VCC<br />      //PA7   &gt;OUTPUT&lt; -PRZEKAZNIK ( WENTYLACJA )<br />         DDRA |=  (1&lt;&lt;PA7);                       //OUTPUT<br />         PORTA |= (1&lt;&lt;PA7);                      //PODCIAGNIECIE DO VCC<br /><br />#endif<br /></div><br /><br />Przy tylu postach nie wiedzieć jak wstawiamy listingi? Daję czas do północy na poprawienie postu, później leci ostrzeżenie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 26 wrz 2014, o 11:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[charsz]]></name></author>
<updated>2014-09-26T09:36:33+01:00</updated>
<published>2014-09-26T09:36:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96730#p96730</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96730#p96730"/>
<title type="html"><![CDATA[Re: Eclipse i dzielenie projektu na kilka osobnych plików]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96730#p96730"><![CDATA[
elganckiego sposobu nie ma bo, nie jest to zalecany sposob kodowania. <br /><br />Sprobuj tak: <br />- zmien nazwe pliku na systemie (nie ecplipsem) TEST_SENSORA.h na TEST_SENSORA.wnc <br />- w nowym projekcie zaincluduj 'TEST_SENSORA.wnc'. <br /><br />Tak a nie inaczej, zeby wykluczyc ze eclipse nauczyl sie ze mial juz taki plik w projekcie (w makefile w szczegolnosci). <br />Jest szansa ze jak nie rozpozna rozszerzenia to nie bedzie probowal cos z tym zrobic poza includowaniem.<br /><br />ps. nie wiem czy to zadziala.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=926">charsz</a> — 26 wrz 2014, o 09:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[charsz]]></name></author>
<updated>2014-09-26T09:26:09+01:00</updated>
<published>2014-09-26T09:26:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96728#p96728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96728#p96728"/>
<title type="html"><![CDATA[Re: Eclipse i dzielenie projektu na kilka osobnych plików]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96728#p96728"><![CDATA[
Ojej! <br />Dawno nie widzialem takiego kodu w C. Owszem bedzie to dzialac jako tako. Ale jak widac 'nowsze' interpretacje zasady dzialania #include sobie z tym nie radza, bo nie powinno sie stosowac w taki sposob includow.<br /><br />Traktujesz includy na zasadzie: <br />- o, a ten fragment kodu przerzuce sobie do innego pliku, zeby mi sie wygodniej czytalo<br />a nalezy je traktowac jako biblioteki zawierajace konkretne funkcje i definicje. <br /><br />Mysle ze powinienes troche sie cofnac i odswiezyc podstawy jezyka C.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=926">charsz</a> — 26 wrz 2014, o 09:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2014-09-26T02:58:40+01:00</updated>
<published>2014-09-26T02:58:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96717#p96717</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96717#p96717"/>
<title type="html"><![CDATA[Re: Eclipse i dzielenie projektu na kilka osobnych plików]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8637&amp;p=96717#p96717"><![CDATA[
Chodzi Tobie Weles o błędne działanie samego Eclipse'a? -(w sensie że nie wykrywa zaincludowanych funkcji jak ma to np. pakiet Borlanda 6, czy tam Embarcadero), <br />czy o to jak wykonuje się samo dzielenie programu w c (projektu) w taki sposób, aby kod main można było przejrzeć nie używając scroll'a?<br /><br />Jeśli to drugie, to najbardziej konkretna odpowiedź jest zawarta w bluebook'u Pana Mirka. W skrócie ja wykonałbym to tak, że do plików *.h (nagłówkowych) które już masz porobiłbym im odpowiednie pliki *.c, np. do drv_gate.h dorobiłbym drv_gate.c<br />Dalej te pliki kolejnych modułów, np. drv_gate.h, drv_gate.c, drv_heat_water.h, drv_heat_water.c załączasz normalnie do głównego pliku main.c jak to robiłeś do tej pory. Komplilator widząc plik nagłówkowy (*.h) szuka jego pliku z kodem (*.c). Zasada jest taka, że w plikach *.h trzymasz deklaracje zmiennych i funkcji, a w pliku *.c odpowiadające im definicje zmiennych i funkcji. Plik main.c &quot;widzi&quot; to wszystko, z tym, że jeśli jakaś zmienna ma być globalna w całym projekcie to powinna być poprzedzona dyrektywą extern. Nie wiem, czy dość jasno to opisałem... Najwyżej dopiszę.<br />Jeśli chodzi o ustawianie środowiska Eclipse, to na tym forum są ludzie którzy dużo lepiej potrafią to wytłumaczyć. Ja jeszcze za słabo znam Eclipse...<br /><br />Tak poza tym widziałem Twój projekt inteligentnego domu. Jestem pod wielkim, pozytywnym wrażeniem!  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" />  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" />  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" />  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" />  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><br /><br />Pozdrawiam z Pomorza! <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 26 wrz 2014, o 02:58</p><hr />
]]></content>
</entry>
</feed>