<div dir="auto">Díky, to union vypadá dobře.</div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">Dne ne 15. 12. 2024 17:36 uživatel Martin Locker <<a href="mailto:locker@vosrk.cz">locker@vosrk.cz</a>> napsal:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" style="font-size:13px"><div>Protože nebyla splněna podmínka, kterou jsem uváděl, tj. little endian. Dle uváděného funkčního kódu je to uloženo big endian.</div><div>Takže jednoduché zkopírování nemůže fungovat. Je nutné byty přerovnat, takže buď ty shifty, union (viz. níže) nebo ten asembler.</div><div><br></div><div>varianta union:</div><div><br></div><div>// ----------------------------</div><div>union TData {</div><div>  long x;</div><div>  byte a[4];</div><div>};</div><div><br></div><div>TData data;</div><div>data.a[0] = RX_Data[10];</div><div id="m_-1525532973352793185isPasted">data.a[1] = RX_Data[9];</div><div id="m_-1525532973352793185isPasted">data.a[2] = RX_Data[8];</div><div id="m_-1525532973352793185isPasted">data.a[3] = RX_Data[7];</div><div id="m_-1525532973352793185isPasted">// ----------------------------</div><div><br></div><div>v data.x je vysledné číslo (doufám, že tam není chybka, píšu to od stolu)</div><div><br></div><div><div>Martin Locker</div></div><div><br></div><div dir="LTR" style="font-size:13px;font-family:Roboto,Tahoma,Helvetica,sans-serif;line-height:normal"><div style="margin:0;font-family:Roboto,Tahoma,Helvetica,sans-serif;font-size:13px;font-weight:300;line-height:150%;letter-spacing:normal;color:#333333"><div style="display:none;margin:0;font-family:Roboto,Tahoma,Helvetica,sans-serif;font-size:13px;font-weight:300;line-height:150%;letter-spacing:normal;color:#333333">----- Původní zpráva -----</div><hr size="1" width="100%" style="width:100%;padding:0;margin:10px 0;color:#888888;background-color:#888888;border-color:#dddddd">Odesilatel: Jirka Mww (<a href="mailto:jirka.mww@gmail.com" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:300;line-height:150%;color:rgb(0,136,204);text-decoration:none" target="_blank" rel="noreferrer">jirka.mww@gmail.com</a>)<br>Datum: 15/12/2024 17:23<br>Příjemce: HW-news (<a href="mailto:hw-list@list.hw.cz" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:300;line-height:150%;color:rgb(0,136,204);text-decoration:none" target="_blank" rel="noreferrer">hw-list@list.hw.cz</a>)<br>Předmět: <span style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:300;line-height:150%;color:#333;text-decoration:none;font-weight:bold">Re: Arduino - 32 bitu promenna ze 4 byte</span></div><br><div><div dir="ltr"><div>To co funguje je tohle : </div><div><br></div><div><div style="color:rgb(78,91,97);font-family:Consolas,"Courier New",monospace;font-size:14px;line-height:19px;white-space:pre-wrap"><div>PowerIO = <span style="color:rgb(67,79,84)">(((((</span><span style="color:rgb(211,84,0)">RX_Data</span>[<span style="color:rgb(0,92,95)">7</span>] <<<span style="color:rgb(0,92,95)">8</span> <span style="color:rgb(67,79,84)">)</span> + <span style="color:rgb(211,84,0)">RX_Data</span>[<span style="color:rgb(0,92,95)">8</span>]<span style="color:rgb(67,79,84)">)</span> <<<span style="color:rgb(0,92,95)">8</span><span style="color:rgb(67,79,84)">)</span> + <span style="color:rgb(211,84,0)">RX_Data</span>[<span style="color:rgb(0,92,95)">9</span>]<span style="color:rgb(67,79,84)">)</span> << <span style="color:rgb(0,92,95)">8</span><span style="color:rgb(67,79,84)">)</span> + <span style="color:rgb(211,84,0)">RX_Data</span>[<span style="color:rgb(0,92,95)">10</span>];</div><div>to od pana Lockera nefunguje, překladačem to projde, ale dává to nesmyslně vysoké číslo.</div><div><br></div><div><br></div></div></div><div><div class="gmail_signature" data-smartmail="gmail_signature" dir="ltr">Zdravi<br>Jirka Sloupenský  OK1MWW</div></div><br></div><br><div class="gmail_quote"><div class="gmail_attr" dir="ltr">ne 15. 12. 2024 v 17:18 odesílatel Pavel Hudeček <<a href="mailto:edizon@seznam.cz" target="_blank" rel="noreferrer">edizon@seznam.cz</a>> napsal:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>A pokud je to opačně, tak ten long dát do unionu s polem bajtů a nakopírovat po jednom ve správném pořadí.<br><br>Přesnější rady by mohly být, kdyby byl k dispozici ten kód co fungoval a ten co nefungoval. Možná tem jenom někde chyběl &, možná tam indiáni bojujou.<br><br>PH<br><br><br><div>Dne 15.12.2024 v 16:59 Martin Locker napsal(a):</div><blockquote type="cite"><div dir="ltr" style="font-size:13px"><div>Za předpokladu, že je to 8-bitové arduino a data jsou little endian, tak třeba takto:</div><div id="m_-1525532973352793185m_-2891749301125180376isPasted">  long x; </div><div>  memcpy(&x, &RX[7], 4);</div><div>nebo</div><div>  long x = *((long*)&RX[7]);</div><div><br></div><div>Martin Locker</div><div><br></div><div><br></div><div dir="LTR" style="font-size:13px;font-family:Roboto,Tahoma,Helvetica,sans-serif;line-height:normal"><div style="margin:0px;font-family:Roboto,Tahoma,Helvetica,sans-serif;font-size:13px;font-weight:300;line-height:150%;letter-spacing:normal;color:rgb(51,51,51)"><div style="display:none;margin:0px;font-family:Roboto,Tahoma,Helvetica,sans-serif;font-size:13px;font-weight:300;line-height:150%;letter-spacing:normal;color:rgb(51,51,51)">----- Původní zpráva -----</div><hr style="width:100%;padding:0px;margin:10px 0px;color:rgb(136,136,136);background-color:rgb(136,136,136);border-color:rgb(221,221,221)" width="100%" size="1">Odesilatel: Jirka Mww (<a href="mailto:jirka.mww@gmail.com" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:300;line-height:150%;color:rgb(0,136,204);text-decoration:none" target="_blank" rel="noreferrer">jirka.mww@gmail.com</a>)<br>Datum: 15/12/2024 16:22<br>Příjemce: HW konference (<a href="mailto:hw-list@list.hw.cz" style="font-family:Helvetica,sans-serif;font-size:12px;font-weight:300;line-height:150%;color:rgb(0,136,204);text-decoration:none" target="_blank" rel="noreferrer">hw-list@list.hw.cz</a>)<br>Předmět: <span style="font-family:Helvetica,sans-serif;font-size:12px;line-height:150%;color:rgb(51,51,51);text-decoration:none;font-weight:bold">Arduino - 32 bitu promenna ze 4 byte</span></div><br><div><div dir="ltr"><div>dobr7 den,</div><div><br></div><div>zase bych potreboval poradit :  Mam 4 byte v poli  RX[7]  az RX[10]  (prijata modbus zprava) </div><div>a potrebuji z nich udelat 32 bit proměnnou (log int).   Postupne nacitani a posuny o 8 bitu  do leva mi funguje, ale radeji bych to nejak prekopiroval rovnou, kvuli rychlosti.  Zkousel jsem pouzit memcpy , ale asi to delam blbe, muzete mi dat nejaky tip , jak to udelat ?  V assembleru bych to umel ((::</div><div>  </div><div><div class="gmail_signature" dir="ltr">Zdravi<br>Jirka Sloupenský  OK1MWW</div></div></div><hr>_______________________________________________<br>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank" rel="noreferrer">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank" rel="noreferrer">http://list.hw.cz/mailman/listinfo/hw-list</a></div></div></div><br><fieldset><br></fieldset><pre>_______________________________________________<br>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank" rel="noreferrer">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank" rel="noreferrer">http://list.hw.cz/mailman/listinfo/hw-list</a></pre></blockquote><br></div>_______________________________________________<br>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a></blockquote></div><hr>_______________________________________________<br>HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank" rel="noreferrer">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank" rel="noreferrer">http://list.hw.cz/mailman/listinfo/hw-list</a></div></div></div>

_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" rel="noreferrer noreferrer" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz" target="_blank" rel="noreferrer">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer noreferrer" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</blockquote></div>