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