Arduino - 32 bitu promenna ze 4 byte

Miroslav Mraz mrazik na volny.cz
Čtvrtek Prosinec 19 15:33:18 CET 2024


Snad jde, ale možná to úplně nechápu o co jde

static      Console  console;
static const uint8_t RX_Data[] = { 0x90, 0xab, 0xcd, 0xef, 0xab, 0xcd, 
0xef, 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef,};
namespace fmt {
   void print () {   // ukončení rekurze když už žádný parametr nezbyl
     console << "\n";
   }
   template<typename First, typename ... Rest>
   void print (const First & first, const Rest & ... rest) {
     console << first;
     print (rest ...);
   }
   template<typename First>
   void print(const First & first ) {
     console << first;
     print();
   }
};

void test () {
   const uint32_t PowerIO = __builtin_bswap32 (((uint32_t *)(RX_Data + 
7))[0]);
   fmt::print(RX_Data[7], RX_Data[8], RX_Data[9], RX_Data[10], PowerIO);
}

Jde to přeložit i pro AVR a výstup pak může být
0x12,0x34,0x56,0x78,0x12345678,
Vzal jsem to z jakéhosi starého příkladu, Console je něco jako 
std::cout, formátování čísel je jiné. Ale nepoužil bych to. Protože je 
to divné, dost nečitelné a je v tom rekurze.

Mrazík



On 19. 12. 24 14:46, Pavel Hudeček wrote:
> ...
> Nejde template s ... abych udělal funkci co má libovolný počet 
> parametrů, aniž by tam byl navíc první, ze kterýho plyne kolik je těch 
> dalších.
> 
> PH


Další informace o konferenci Hw-list