[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