Re: C: Arduino : Přesun pole bytů do proměnné unsigned long
Jirka Mww
jirka.mww na gmail.com
Pátek Listopad 10 10:22:01 CET 2023
Díky všem za rady, něco z toho určitě použiju.
Zjistil jsem taky , že mám špatnou informaci o pořadí registrů v tom
měniči GOODWE, teď už mám lepší soubor. Vzhledem k tomu, že údaj v těch
registrech je v 1/10W, a můj měnič víc než 5.5 kW nedává, vejde se údaj o
výkonu do dvou bytů ( Max 650000, je to unsigned ) , takže ty horní byty
jsou stejně nuly.S tím si i prostým posunem o 8 bitů klidně poradím.
Zdravi
Jirka Sloupenský OK1MWW
čt 9. 11. 2023 v 13:17 odesílatel Miroslav Mraz <mrazik na volny.cz> napsal:
> Napsal bych to asi takto
> static unsigned char RX_Data[] = {0, 0, 0, 0x12, 0x34, 0x56, 0x78, 0,
> 0xab, 0xcd};
> void test () {
> uint32_t res4b = 0u;
> memcpy (&res4b, RX_Data + 3, sizeof(res4b));
> res4b = __builtin_bswap32 (res4b); // pokud leze MSB jako první,
> jinak vynechat
> printf ("test4b:0x%08lX\n", res4b);
>
> uint16_t res2b = 0u;
> memcpy (&res2b, RX_Data + 8, sizeof(res2b));
> res2b = __builtin_bswap16 (res2b); // stejně jako pro res4b
> printf ("test2b:0x%04X\n", res2b);
> }
> Funguje to, memcpy() se tam nijak neprojeví a připadá mi to čitelnější.
> Výstup je
> test4b:0x12345678..
> test2b:0xABCD..
>
> Mrazík
>
> On 08. 11. 23 17:27, Jirka Mww wrote:
> > Teď mne ještě napadlo, že vlastně nevím, jaké je pořadí významnosti bytů
> > v tom unsignedlong. Je to tak, že nejvýznamější byte je první,
> > nebo je poslední? Jsem z toho nějaký zmatený ((::
> >
> > Zdravi
> > Jirka Sloupenský OK1MWW
> >
> >
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20231110/0b83d86d/attachment.htm>
Další informace o konferenci Hw-list