Witam,
Walczę z liczeniem CRC i chyba utknąłem ze znajomością C. Popełniłem taki kod:
Wysyłam dane w ten sposób:
Jest prawej okej. Mam problem z przesłaniem 8,16 lub 32 bitów. Gdy zrobię:
uint8_t datatest[] = {0xAA}; wynik jest okej: 0xF550.
Natomiast gdy dam uint16_t = {0xAA} wynik jest błędny 0xEFBA.
Natomiast gdy dam uint16_t = {0xAAAA} wynik jest okej. 0xFB1A
Ewidentnie źle liczę liczby bajtów. Jak zrobić aby funkcja CRC16 była niezależna od szerokości przesyłanych danych? Do celowo chciałbym wrzucać struktury, które czasem mają uint8, uint16 lub int.
Walczę z liczeniem CRC i chyba utknąłem ze znajomością C. Popełniłem taki kod:
Kod: C / C++
Wysyłam dane w ten sposób:
Kod: C / C++
Jest prawej okej. Mam problem z przesłaniem 8,16 lub 32 bitów. Gdy zrobię:
uint8_t datatest[] = {0xAA}; wynik jest okej: 0xF550.
Natomiast gdy dam uint16_t = {0xAA} wynik jest błędny 0xEFBA.
Natomiast gdy dam uint16_t = {0xAAAA} wynik jest okej. 0xFB1A
Ewidentnie źle liczę liczby bajtów. Jak zrobić aby funkcja CRC16 była niezależna od szerokości przesyłanych danych? Do celowo chciałbym wrzucać struktury, które czasem mają uint8, uint16 lub int.