Forum: PC-Programmierung LRC - Longitudinal Redundancy Check


von Thomas (Gast)


Lesenswert?

Hallo zusammen

Ich habe eine Aufgabe erhalten eine Checksumme aus einem ASCII String zu 
errechnen.
Kann mir jemand genau erklären wie das funktioniert.

Soviel ich mich derweil informiert habe müssen zuerst alle ASCII zeichen 
in DEZ ermittelt werden.
Dannach DEZ in BIN und dann miteinander via XOR verknüpft werden.

1. Zeichen mit 2. Zeichen dann das Resultat mit dem 3. Zeichen usw.


Ich habe aber auf einer anderen Seite gelesen dass die Summe aller DEZ 
Werte ermittelt wird dann negiiert und dann noch etwas was ich nicht 
mehr verstanden habe.

Wichtig ist dass ich die Aufgabe von Hand lösen muss. (nur Mithilfe der 
ASCII Tabelle)

Könnt ihr mir weiterhelfen bei Rechnen der LRC vom Beispiel: 2426ABC

Danke im Voraus
Gruss Tom

von J. Watt (Gast)


Lesenswert?

Thomas schrieb:
> Ich habe aber auf einer anderen Seite gelesen

Konzentriere dich nur auf das, was du in der Schule gelernt hast. Im 
Internet können auch Fehler sein.

von Thomas (Gast)


Lesenswert?

Hi J.Watt ja ich weiss desshalb habe ich das Internet ja auch nur als 
Qulle für informationen verwendet.

Dies muss leider im selbsstudium passieren und da ich nun im Internet 
keine verlässliche Information gewonnen habe suche ich jemanden der mir 
etwas auf die Sprünge helfen kann.

Kannst du mir irgendwelche Tipps oder Informationen geben mit denen ich 
meine Aufgabe lösen kann?

Gruss Tom

von Ralf (Gast)


Lesenswert?

Und was sagen deine Schulunterlagen dazu? -> Welche Stelle aus den noch 
nicht näher erläuterten Schulunterlagen verstehst du nicht?
Wenn du aus den Schulunterlagen zitierst kann man die unverständlichen 
Stellen mal unter die Lupe nehmen.

Ralf

von Thomas (Gast)


Lesenswert?

Es steht nur Berechne die LRC aus folgendem String: 2426ABC

So steht die Aufgabe geschrieben.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thomas schrieb:
> Es steht nur Berechne die LRC aus folgendem String: 2426ABC

Es gibt nicht die LRC. Zwei LRCs hast du ja schon genannt: Die mit
Paritäts- und die mit Summenbildung. Wenn die Aufgabenstellung nicht
angibt, welche zu benutzen ist, dann such dir einfach eine aus. Für die
Berechnung auf dem Papier würde ich die Variante mit Summenbildung (nach
ISO 1155) wählen, weil du dazu die einzelnen ASCII-Codes nicht bitweise
bearbeiten musst.

Mehr dazu:

  http://en.wikipedia.org/wiki/Longitudinal_redundancy_check

Edit:

Oder habt ihr im Unterricht eine bestimmte LRC näher behandelt? Dann
solltest du natürlich diese verwenden.

: Bearbeitet durch Moderator
von Thomas (Gast)


Lesenswert?

Nein ich denke ich muss die Aufgabe mit Paritätsbildung lösen da ich die 
ASCII Tabelle als Hilfsmittel verwenden dar.

Bei dieser Methode nehme ich alle ASCII Zeichen wandle Sie in BIN.

BSP.: 2426ABC

Poistion1:   2 --> 0011 0010
Poistion2:   4 --> 0011 0100
Poistion3:   2 --> 0011 0010
Poistion4:   6 --> 0011 0110
Poistion5:   A --> 0100 0001
Poistion6:   B --> 0100 0010
Poistion7:   C --> 0100 0011

Dann Position1 ^ Poistion2 --> Zwischenresultat1

Anschliessend Zwischenresultat1 ^ Position3

usw.

Hab dieses Beispiel mal durchgerechnet:
0011 0010 --> Pos1
0011 0100 --> Pos2
0000 0110 --> Zwischenresultat1
0011 0010 --> Pos3
0011 0100 --> Zwischenresultat2
0011 0110 --> Pos4
0000 0010 --> Zwischenresultat3
0100 0001 --> Pos5
0100 0011 --> Zwischenresultat4
0100 0010 --> Pos6
0000 0001 --> Zwischenresultat5
0100 0011 --> Pos7
0100 0010 --> Resultat

Nun ist die Frage was mach ich mit dem Resultat?

Grüsse Tom

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thomas schrieb:
> Nun ist die Frage was mach ich mit dem Resultat?

Zusammen mit dem Rechenweg auf das Lösungsblatt schreiben.

In einer realen Anwendung würde der Sender den errechneten Wert als 
zusätzliches Byte nach den Nutzdaten senden, so dass der Empfänger 
überprüfen kann, ob die Kommunikation fehlerfrei war.

von Thomas (Gast)


Lesenswert?

Also dann wäre das Resultat 0100 0010 --> DEZ: 66 --> ASCII: B

Dann würde folgendes Übertragen werden: 2426ABCB

Stimmt dies so?

Gruss
Tom

von Yalu X. (yalu) (Moderator)


Lesenswert?

Genau.

von Thomas (Gast)


Lesenswert?

Besten Dank bis hierhin für eure super Hilfe und Unterstützung!

Wie sieht es aus wenn die Zeile etwas länger ist.
Zum Beispiel: 564884HDKWI??KDJE82032LO999

Ist es auch möglich dass der LRC für eine Anzahl Zeichnblöcke berechnet 
wird und am Schluss angefügt wird?

Wie im Beispiel mit der Zeile: 564884HDKWI??KDJE82032LO999

1. Block: "564884HD"
2. Block: "KWI??KDJ"
3. Block: "E82032LO"

Und dann der LRC
Block 1: Resultat als Beispiel: "9"
Block 2: Resultat als Beispiel: "9"
Block 3: Resultat als Beispiel: "9"

und dieser dann am Ende der Zeile angefügt wird?

Gruss Tom

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Thomas schrieb:
> Ist es auch möglich

Nein das ist völlig unmöglich und ausgeschlossen...

Thomas schrieb:
> Und dann der LRC

... oder doch nicht? ;-)


Ihr werdet doch wohl irgendwas im Unterricht behandelt haben... und das 
zählt!

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Läubi .. schrieb:
> Thomas schrieb:
>> Ist es auch möglich
>
> Nein das ist völlig unmöglich und ausgeschlossen...

nur zur Erläuterung.
Wenn man sowas macht, leitet man sofort und unmittelbar den 
Weltuntergang ein.

:-)

Möglich ist alles, was du dir ausdenken kannst!
Der Empfänger muss rausfinden können, welches die Checksumm-Bytes sind. 
Das ist deine einzige Einschränkung.

: Bearbeitet durch User
von Reinhard Kern (Gast)


Lesenswert?

Thomas schrieb:
> Ist es auch möglich dass der LRC für eine Anzahl Zeichnblöcke berechnet
> wird und am Schluss angefügt wird?

Und was machst du wenn nur ein Block gesendet wird?

Wie Loriot sagt: ein Leben ohne Mops ist möglich. Aber sinnlos.

Also möglich ja, sinnvoll nein. Unterschiedliche Messagelängen sind nur 
möglich, wenn z.B. ASCII-kodiert wird und die Prüfsumme extra 
gekennzeichnet, bei Intel Hex etwa durch ":". Der Empfänger muss ja 
wissen, wo die Prüfsumme anfängt.

Gruss Reinhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.