Witam.
Buduję sobie urządzenia połączone ze sobą interfejsem RS485. Urządzenia przesyłają pomiędzy sobą informacje całymi stringami. Chciałbym zrobić coś w rodzaju CRC w celu wykrywania i eliminacji błędów transmisji.
Co pomiędzy sobą przesyłają urządzenia?
Urządzenie A wysyła do urządzenia B kilka informacji (stringów) kolejno po sobie. Na podstawie tych informacji urządzenie B składa sobie pewien nowy string (urządzenie A oprócz tego wysłało kilka innych informacji, ale chodzi o sprawdzenie poprawności tego najważniejszego stringu).
Chcę to zrobić, w taki sposób, że:
1. urządzenie A wysyła 4 stringi do urządzenia B
2. urządzenie B odbiera stringi i tworzy na ich podstawie pewne słowo kodowe, np. 001.002.003.004
(nie wiemy jednak czy ostateczna postać wygenerowanego słowa kodowego nie została przekłamana błędami transmisji, trzeba sprawdzić, czy słowo kodowe wygenerowane po stronie urządzania A i B są identyczne), dlatego:
3. urządzenie B wysyła do urządzenia A żądanie przesłania kodu w rodzaju "CRCA" wygenerowanego przez urządzenie A na podstawie wysłanego przezeń wcześniej kodu.
4. Urządzenie A odsyła wygenerowany przez siebie kod "CRCA".
5. Urządzenie B na podstawie utworzonego przez siebie słowa kodowego, generuje kod "CRCB" i porównuje go z odebranym "CRCA".
Pytanie moje jest takie. Jak na podstawie stringu (składnią przypominającego adres IP), np. 100.101.102.103 wygenerować kod "CRCA" o długości najlepiej 1 bajta (a więc liczbę od 0 do 255), która z wystarczającym poziomem ufności zaświadczy o tym, że stringi wysłany i odebrany (jeśli na ich podstawie generuje się to samo CRCA = CRCB) są takie same?
Według jakiego algorytmu generować kody w rodzaju "CRC" dla stringów postaci: a.b.c.d gdzie liczby a, b, c, d są bajtami?
Buduję sobie urządzenia połączone ze sobą interfejsem RS485. Urządzenia przesyłają pomiędzy sobą informacje całymi stringami. Chciałbym zrobić coś w rodzaju CRC w celu wykrywania i eliminacji błędów transmisji.
Co pomiędzy sobą przesyłają urządzenia?
Urządzenie A wysyła do urządzenia B kilka informacji (stringów) kolejno po sobie. Na podstawie tych informacji urządzenie B składa sobie pewien nowy string (urządzenie A oprócz tego wysłało kilka innych informacji, ale chodzi o sprawdzenie poprawności tego najważniejszego stringu).
Chcę to zrobić, w taki sposób, że:
1. urządzenie A wysyła 4 stringi do urządzenia B
2. urządzenie B odbiera stringi i tworzy na ich podstawie pewne słowo kodowe, np. 001.002.003.004
(nie wiemy jednak czy ostateczna postać wygenerowanego słowa kodowego nie została przekłamana błędami transmisji, trzeba sprawdzić, czy słowo kodowe wygenerowane po stronie urządzania A i B są identyczne), dlatego:
3. urządzenie B wysyła do urządzenia A żądanie przesłania kodu w rodzaju "CRCA" wygenerowanego przez urządzenie A na podstawie wysłanego przezeń wcześniej kodu.
4. Urządzenie A odsyła wygenerowany przez siebie kod "CRCA".
5. Urządzenie B na podstawie utworzonego przez siebie słowa kodowego, generuje kod "CRCB" i porównuje go z odebranym "CRCA".
Pytanie moje jest takie. Jak na podstawie stringu (składnią przypominającego adres IP), np. 100.101.102.103 wygenerować kod "CRCA" o długości najlepiej 1 bajta (a więc liczbę od 0 do 255), która z wystarczającym poziomem ufności zaświadczy o tym, że stringi wysłany i odebrany (jeśli na ich podstawie generuje się to samo CRCA = CRCB) są takie same?
Według jakiego algorytmu generować kody w rodzaju "CRC" dla stringów postaci: a.b.c.d gdzie liczby a, b, c, d są bajtami?