Advertisement
pleasedontcode

Checksum

Jan 21st, 2025
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 1.46 KB | Source Code | 0 0
  1. const int dataSize = 10; // Dimensione dell'array di dati
  2.  
  3. // Funzione per calcolare il checksum (somma modulo 256)
  4. uint8_t calculateChecksum(const uint8_t *data, size_t length) {
  5.   uint8_t checksum = 0;
  6.   for (size_t i = 0; i < length; i++) {
  7.     checksum += data[i];
  8.   }
  9.   return checksum;
  10. }
  11.  
  12. // Funzione per verificare il checksum
  13. bool verifyChecksum(const uint8_t *data, size_t length, uint8_t receivedChecksum) {
  14.   uint8_t calculatedChecksum = calculateChecksum(data, length);
  15.   return calculatedChecksum == receivedChecksum;
  16. }
  17.  
  18. void setup() {
  19.   Serial.begin(9600);
  20.  
  21.   // Esempio di dati
  22.   uint8_t data[dataSize] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
  23.  
  24.   // Calcola il checksum
  25.   uint8_t checksum = calculateChecksum(data, dataSize);
  26.   Serial.print("Checksum calcolato: ");
  27.   Serial.println(checksum, HEX); // Visualizza il checksum in esadecimale
  28.  
  29.   // Verifica il checksum
  30.   bool isValid = verifyChecksum(data, dataSize, checksum);
  31.   if (isValid) {
  32.     Serial.println("Il checksum è valido.");
  33.   } else {
  34.     Serial.println("Il checksum è invalido.");
  35.   }
  36.  
  37.   // Simula un errore nei dati
  38.   data[2] = 99; // Cambia il terzo elemento
  39.  
  40.   // Verifica nuovamente il checksum
  41.   isValid = verifyChecksum(data, dataSize, checksum);
  42.   if (isValid) {
  43.     Serial.println("Il checksum è valido (dopo la modifica).");
  44.   } else {
  45.     Serial.println("Il checksum è invalido (dopo la modifica).");
  46.   }
  47. }
  48.  
  49. void loop() {
  50.   // Ciclo vuoto
  51. }
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement