mikrocontroller.net

Forum: PC-Programmierung Checksumme, anschauliches beispiel?


Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

kann mir einer vlt an einem beispiel erläutern wie eine checksumme 
funktioniert?
wenn ich zum beispiel über die seriele schnittstelle die daten:

Startbit, datenbits, stopbit: ASCII "G" = 47d.

| 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |

Unter wikipedia steht man muss die summe der bits bzw bytes bilden.
in diesem fall hätte ich 10 bits.
heisst das ich muss am empfänger, beispielsweise controller die 
empfangenen daten wieder berechenen wieviele bits eingelesen wurden?
wie würde man sowas machen?

gruss
Gerd

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gerd schrieb:
> Hallo
>
> kann mir einer vlt an einem beispiel erläutern wie eine checksumme
> funktioniert?
> wenn ich zum beispiel über die seriele schnittstelle die daten:
>
> Startbit, datenbits, stopbit: ASCII "G" = 47d.
>
> | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 |
>
> Unter wikipedia steht man muss die summe der bits bzw bytes bilden.
> in diesem fall hätte ich 10 bits.

Nein. Die Summe

   0 + 1 + 1 + 1 + 0 + 0 + 0 + 1 + 0 + 1

wäre 5

Aber Start und Stop Bits werden in die Checksumme nicht eingerechnet. 
Wenn die nämlich nicht stimmen würden, würde die Übertragung schon mal 
prinzipiell nicht funktionieren.

> heisst das ich muss am empfänger, beispielsweise controller die
> empfangenen daten wieder berechenen wieviele bits eingelesen wurden?
> wie würde man sowas machen?

Genauso wie beim Sender.
Dann wird verglichen. Stimmen die Checksummen nicht überein, dann ist 
auf jeden Fall ein Übermittlungsfehler passiert.


Es ist aber unüblich Checksummen über einzelne Bits zu machen. 
Normalerweise hört man auf Byteeben auf.

Die Checksumme zu 'G', mit dem ASCII Code von 47d wäre 47d
Die Checksumm zu 'AB', ASCII Codes 65d und 66d, wäre  65d + 66d = 131d

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Barcodes gibts z.B. auch Checksummen, die auf Gewichtung und Modulo 
(Rest einer Division) beruhen. Beim 2 aus 5 interleaved geht das so:

Zahl im Code: 12345
Gewichtung:   31313

D.h. zuerst wird die Summe aus den gewichteten Ziffern gebildet:

1*3 + 2*1 +3*3 + 4*1 + 5*3 = 3+2+9+4+15 = 33

Division ganzzahlig 33/10=3
Umkehrung            3*10=30
Differenz zur Summe (Rest)=3

Prüfziffer = 3, Code mit Prüfziffer = 123453

Die Deteils sind bei fast jeder Barcode-Familie anders. Beim Code 128C 
z.B. wird mit der Stellenposition gewichtet (12345...).

Frank

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ergänzung:

Eine simple Quersumme gilt nicht als sicher, weil es zu leicht möglich 
ist, dass sich Übertragungsfehler gegenseitig kompensieren. Ziel ist es, 
selbst bei einzelnen Bitfehlern möglichst drastisch auseinander liegende 
Prüfsummen zu erhalten.

Frank

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und damit ist man bei CRC

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und kann jemand die CRC anschaulich erklären :-)
nicht die Struktur beschreiben, sondern die Fehlerentdeckungsanalyse,
worst case etc

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auf CRC werden doch zum Teil dieselben Anforderungen gestellt wie auf
ein Hashalgorithmus. Kleiner Keyunterschied -> weite Streung, und wenig
Kollisionen.
Kennt ihr Inetquellen wo das gut beschrieben ist?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.