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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-12-14T21:50:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17072&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-12-14T21:50:04+01:00</updated>
<published>2016-12-14T21:50:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177524#p177524</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177524#p177524"/>
<title type="html"><![CDATA[Re: Przechowywanie wartosci struktury w tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177524#p177524"><![CDATA[
<div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />mając na względzie endianness oraz struct padding.<br /></div><br /><br />DOKŁADNIE - szczególnie na ten padding bym zwrócił uwagę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo się można przejechać<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br /><div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />aa... to tak się pisze.  <br />rzutowanie adresu do wskaźnika. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent">uint8_t *wynik_ptr = (uint8_t*)&amp;wynik;<br /></div><br />A ja tańczyłem z tą gwiazdką poza nawiasem i była ciągle kiszka.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Dzięki <strong>andrews</strong> .</div><br /><br />(char*)<br /><br />(uint8_t*)<br /><br />(int*)<br /><br />to ZAWSZE oznacza rzutowanie na typ wskaźnikowy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... i nie ważne czy dotyczy adresu czy zmiennej czy czegokolwiek - warto o tym pamiętać <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> — 14 gru 2016, o 21:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-12-14T21:27:51+01:00</updated>
<published>2016-12-14T21:27:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177517#p177517</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177517#p177517"/>
<title type="html"><![CDATA[Re: Przechowywanie wartosci struktury w tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177517#p177517"><![CDATA[
aa... to tak się pisze.  <br />rzutowanie adresu do wskaźnika. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><div class="quotetitle">andrews napisał(a):</div><div class="quotecontent"><br />uint8_t *wynik_ptr = (uint8_t*)&amp;wynik;<br /></div><br />A ja tańczyłem z tą gwiazdką poza nawiasem i była ciągle kiszka.  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Dzięki <strong>andrews</strong> .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 14 gru 2016, o 21:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-12-14T21:16:17+01:00</updated>
<published>2016-12-14T21:16:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177514#p177514</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177514#p177514"/>
<title type="html"><![CDATA[Re: Przechowywanie wartosci struktury w tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177514#p177514"><![CDATA[
Jeśli o to chodzi, możesz przecież to samo uzyskać za pomocą wskaźnika na strukturę bez użycia tablicy.<br /><strong>Przykładowo:</strong><br />[syntax=c]typedef struct<br />{<br />    uint16_t V;    <br />    uint32_t E;            <br />    uint8_t D;             <br />    int16_t T1;            <br />    int16_t T2;                            <br />    int32_t P;             <br />    uint16_t RH;   <br />} struktura2;<br />struktura2 wynik;<br />uint8_t *wynik_ptr = (uint8_t*)&amp;wynik;<br /><br />// i później we funkcji<br />    for(uint8_t i=0; i&lt;sizeof(struktura2); i++)<br />    {<br />        // to tylko przykład - funkcję wysyłającą przez spi<br />        // nazwałem 'spi_send', chodziło tylko o pokazanie sposobu dostępu<br />        // do poszczególnych bajtów struktury<br />        spi_send( *(wynik_ptr+i) );<br />    }[/syntax]<br />To tylko przykład, można to rozwiązać na różne sposoby tylko za pomocą wskaźników, efekt będzie taki sam, jak w przypadku użycia tablicy.<br /><br />Oczywiście należy pamiętać, że w przypadku przesyłania danych pomiędzy różnymi systemami należy zapewnić odpowiednią interpretację odebranych danych, mając na względzie <strong><em>endianness</em></strong> oraz <strong><em>struct padding</em></strong>. Wpisanie odebranych danych bezpośrednio do struktury (w ten sam sposób, jak przy wysyłaniu) może nie przynieść oczekiwanych rezultatów. To może być nieco bardziej kłopotliwe, niż samo wysłanie.<br /><br />O zabezpieczeniu transmisji sumą kontrolną już pisał nie będę <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=14165">andrews</a> — 14 gru 2016, o 21:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arknaw]]></name></author>
<updated>2016-12-14T20:30:18+01:00</updated>
<published>2016-12-14T20:30:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177505#p177505</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177505#p177505"/>
<title type="html"><![CDATA[Re: Przechowywanie wartosci struktury w tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177505#p177505"><![CDATA[
No pewnie zostanę za to ostro skarcony <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ale oczywiście powiem <br />Muszę uruchomić komunikację SPI z Raspberry. Głupim, ale odgórnie nałożonym zaleceniem aby ta komunikacja była jak najszybsza. Dlatego rozważam czy nie zrezygnować z polecanej i szeroko wykorzystywanej komunikacji w zapisie tekstowym na rzecz binarnej. Ramka będzie ściśle określona, wiem jakie dane będą zawsze przesyłane. Także powinno się chyba udać.<br />A ponieważ mogę na raz przesłać tylko jeden bajt przez SPI, w przerwaniach od tego modułu (gdy pojawią sie dane od Mastera) wysyłałbym kolejne elementy tablicy poprzez prostą zmianę nr indeksu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11354">arknaw</a> — 14 gru 2016, o 20:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[andrews]]></name></author>
<updated>2016-12-14T20:17:40+01:00</updated>
<published>2016-12-14T20:17:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177501#p177501</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177501#p177501"/>
<title type="html"><![CDATA[Re: Przechowywanie wartosci struktury w tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177501#p177501"><![CDATA[
Jeśli chcesz skopiować dane ze struktury do tablicy, możesz użyć funkcji memcpy().<br />Jeśli chcesz mieć tablicowy dostęp do danych struktury, możesz użyć unii.<br /><br />Mógłbyś zdradzić, do czego te manipulacje mają służyć? Być może da się to rozwiązać inaczej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14165">andrews</a> — 14 gru 2016, o 20:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[arknaw]]></name></author>
<updated>2016-12-14T19:03:59+01:00</updated>
<published>2016-12-14T19:03:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177497#p177497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177497#p177497"/>
<title type="html"><![CDATA[Przechowywanie wartosci struktury w tablicy znaków]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17072&amp;p=177497#p177497"><![CDATA[
Witam. <br />Mam problem jak przechować wartość pól struktury w tablicy znaków. Przedstawię może odrazu kod to pownno być wiadomo o co mi chodzi.<br />Mam strukturę daną tak:<br />[syntax=c]typedef struct<br />{<br />uint16_t V;<br />uint32_t E;<br />uint8_t D;<br />int16_t T1; <br />int16_t T2;<br />int32_t P;<br />uint16_t RH;<br />} struktura2;<br />struktura2 wynik;[/syntax]<br />oraz tablicę znaków:<br />[syntax=c]volatile uint8_t tabPom&#91;17&#93;;[/syntax]<br /> Na chwilę obecną zapisuję sobie w tej tablicy znaków pola struktury w taki sposób:<br />[syntax=c]void Zapisz_tab_Pom()<br />{<br />tabPom&#91;0&#93;=(wynik.V&gt;&gt;8);//starsza czesc predkosci<br />tabPom&#91;1&#93;=wynik.V;//starsza czesc predkosci<br />tabPom&#91;2&#93;=(wynik.E&gt;&gt;24);//najstarsza czesc oswietlenia<br />tabPom&#91;3&#93;=(wynik.E&gt;&gt;16);<br />tabPom&#91;4&#93;=(wynik.E&gt;&gt;8);<br />tabPom&#91;5&#93;=wynik.E;//najmłodza czesc oswietlenia<br />tabPom&#91;6&#93;=wynik.D; //kierunek wiatru<br />tabPom&#91;7&#93;=(wynik.T1&gt;&gt;8);//starsza czesc temp z lm35<br />tabPom&#91;8&#93;=wynik.T1;//temp z lm35<br />tabPom&#91;9&#93;=(wynik.T2&gt;&gt;8);//starsza czesc temp z bmp180<br />tabPom&#91;10&#93;=wynik.T2;//temp z bmp180<br />tabPom&#91;11&#93;=(wynik.P&gt;&gt;24);//najstarsza czesc cisnienia<br />tabPom&#91;12&#93;=(wynik.P&gt;&gt;16);<br />tabPom&#91;13&#93;=(wynik.P&gt;&gt;8);<br />tabPom&#91;14&#93;=wynik.P;<br />tabPom&#91;15&#93;=(wynik.RH&gt;&gt;8);//starsza czesc wilgotnosci<br />tabPom&#91;16&#93;=wynik.RH;//młodsza czesc wilgotnosci*/<br />}[/syntax]<br />W ten sposób rozbijam sobie zmienne 16 i 32 bitowe na większą liczbę zmiennych. I ten prezentowany kod (funkcja) działa (a przynajmniej tak wynika z pierwszych testów). Czy znacie może jakiś sposób aby ta &quot;konwersja&quot; była przeprowadzona w sposób bardziej elegancki? Może znacie Koledzy sposób aby przypisywać do tablicy nie właściwe wartości pól struktury, a wskaźnik do struktury (kombinuję w tą stronę, ale nie mogę nic działającego wymyślić). No bo jak rozwiązać taki problem, gdyby struktura zawierała nie parę, a np. 100 takich pól?<br />Mam nadzieję że w miarę jasno to opisałem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11354">arknaw</a> — 14 gru 2016, o 19:03</p><hr />
]]></content>
</entry>
</feed>