Einfache Hash- / Checksummen-Funktion zur Nachrichtenquittierung zwischen zwei Funkeinheiten

  • Ich versuche, die Kommunikation zwischen zwei Xbee-Funkgeräten mit Mikrocontrollern herzustellen. Diese Funkgeräte haben ihre eigenen Funktionen für Bestätigung und Prüfsumme, aber sie sind zu simpel und ich habe trotzdem ohnehin falsche Nachrichten am anderen Ende.

    Ich möchte ein robusteres System implementieren Bestätigungsschema, bei dem der Empfänger eine Nachricht sendet, die einen Hash / eine Prüfsumme der Nachricht enthält, und der Absender diesen Wert in einer Tabelle der gesendeten Nachrichten nachschlägt und die übereinstimmende gesendete Nachricht löscht (wenn eine Nachricht für eine festgelegte Zeit nicht gelöscht wurde Die Nachricht wird erneut gesendet, bis eine Übereinstimmung gefunden wird.

    Mein Problem ist, dass mir Prüfsummen und Hashfunktionen nicht vertraut sind. Beide Funktionen sind ähnlich, aber für unterschiedliche Zwecke konzipiert.

    Gibt es einen einfachen Algorithmus, der sowohl als Hashfunktion (Kollisionsvermeidung, damit die falsche gesendete Nachricht nicht gelöscht wird) als auch als Prüfsummenfunktion (sehr empfindlich gegen Übertragungsfehler) zur gleichen Zeit, die einfach auf einem 8-Bit-Mikrocontroller implementiert werden kann (in C programmiert).

    22 November 2011
    Faken
2 answers
  • Es klingt so, als würden Sie nach CRC suchen. Abhängig von der Länge, die Sie wählen, sollten Sie es in der Lage sein, es auf Ihrem Mikrocontroller schnell genug zu berechnen.

    Wenn ich Sie wäre, würde ich die Prüfsumme nicht zur Identifizierung Ihrer Datenpakete verwenden . Ich würde für diesen Zweck eine zunehmende Paket-ID verwenden. Dadurch erhalten Sie eine bessere Kontrolle und sollten die Implementierung eines Schiebefensterprotokolls erleichtern >

    22 November 2011
    jncratonKhazl
  • Sie sollten einen 16-Bit-CRC verwenden und ein Standard-Polynom auswählen. Das schützt Sie vor Korruption. Sie können auch einen Header mit der Folgenummer hinzufügen, um Duplikate zu erkennen, wenn Sie ein zuverlässiges Übertragungsverfahren durchführen.

    22 November 2011
    TJD