[elektro] A szokásos C kezdő kérdések

Lajos Rancz lajos.rancz at gmail.com
Mon Jan 28 20:08:38 CET 2013


Helló!

Több szintre kéne bontani:

int32 calc_crc(void *ptr, size_t len)
{
....
    return crc;
}

void send(void *ptr, size_t len)
{
    size_t i;
    char *p = (char*)p;
    for (i = 0; i < len; i++) { SERIAL_REG = p[i]; }
}

void send_with_crc(void *ptr, size_t len)
{
    int32 crc = calc_crc(ptr, len);
    send(ptr, len);
    send(&crc, sizeof(crc));
}

Innentől kezdve azt küldesz vele amit akarsz. Ha akarod akkor egyenként
CRC-zve az inteket:
int a,b,c;
....
send_with_crc(&a, sizeof(a));
send_with_crc(&b, sizeof(b));
send_with_crc(&c, sizeof(c));

Vagy tömbként:
int values[5];
....
send_with_crc(&values[0], sizeof(values));

Esetleg struct:
typedef struct
{
    int a;
    int b;
    int c;
} MyStruct;

MyStruct values;
....
send_with_crc(&values, sizeof(values));

Mivel char pointerre castolsz az endiannal lehet gond.

Üdv


2013. január 28. 19:52 Skandar Graun írta, <sgraun at gmail.com>:

> Sziasztok.
>
> Megint az alapküzdés.
>
> Van egy pár változóm, jellemzően int típus.
> Ezeket ki akarom vinni soros vonalra, meg 8 bites CRC-t számolni rá.
> Hogy tudom ezeket betenni egy unsigned char tömbbe.
> Néztem a struct utasítást, de úgy érzem, egyszerű megoldásom nem lesz rá.
> Matekozni (osztás, maradék, meg hasonlók) azért nem kéne tán egy
> egyszerű memóriaelérés miatt.
>
> Köszi előre is.
>
> -----------------------------------------
>           elektro[-flame|-etc]
>


More information about the Elektro mailing list