<div class="iw_mail" 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="isPasted">data.a[1] = RX_Data[9];</div><div id="isPasted">data.a[2] = RX_Data[8];</div><div id="isPasted">data.a[3] = RX_Data[7];</div><div id="isPasted">// ----------------------------</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 class=""><div>Martin Locker</div></div><div><br></div><div class="iw-reply-block" 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;">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;">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;"><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 gmail_quote_container"><div class="gmail_attr" dir="ltr">ne 15. 12. 2024 v 17:18 odesílatel Pavel Hudeček <<a href="mailto:edizon@seznam.cz">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_-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;">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;">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">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list">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">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list">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">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list" rel="noreferrer">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">www.HW.cz</a><br><a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a></div></div></div>