Verständnisproblem bei der zyklischen Redundanzprüfung - CRC

Hirschwolf

Lt. Commander
Registriert
März 2010
Beiträge
1.901
Hallo zusammen,

ich benötige mal eure Meinung.

Ich muss für ein Projekt ein CRC rechnen. Hierfür hat die Vorgängergruppe immer auf diese Seite verwiesen CRC-Rechner.

Dort steht in der Erläuterung folgedes

data sequence can be either NULL or a sequence of characters and hexadecimal values between %00...%FF, so is '%31%32%33' the same as '123'.

dort wird ja anscheinend mit dem % eine hex-Zahl gekennzeichnet. Was soll dann die 123 für ne Zahl sein?


Ich hab jetzt mal beide vorschläge ausprobiert, und das Ergebnis ist identisch.

da ich von hier keine Bilder hochladen kann, mal die einstellungen:
CRC-16
Generatorpolynom 0x8005
start 0x0
final XOR 0x0
Daten 1: %31%32%33
Daten 2: 123

beides mal das Ergebnis: BA04(hex), 3 data bytes


kann von euch jemand sagen wie dort die zahl umgeformt wird?

danke Hirschwolf
 
"123" bzw. '1', '2', '3' entsprechen nach ASCII den Zahlen 61 (= 31 hex), 62 (= 32 hex), 63 (= 33 hex).

Verstanden, wie das zustande kommt?
 
danke,

sehr ernüchternd die Lösung.

hast du noch ne idee, wenn ASCII ohne vorzeichen geschrieben werden können, ob man irgendwie dezimal Zahlen eingeben kann.
 
Du kannst die Dezimalzahl in eine Hexzahl konvertieren (Windows Taschenrechner). Und dann hast du soundso viele Hexbytes die du nach der ASCII-Tabelle in Text konvertieren kannst. Viel Spaß! ;)


Was willst du überhaupt erreichen?
 
ich habe von einer vorgänger gruppe eine Platine bekommen die eine Kette von Bleiakkus überwacht. ich darf da jetzt eine Busanbidung bauen.

Nur haben die Deppen einen gängiges Protokoll genommen und daran rumgebastelt, mit dem Ergebnis ds die Standard Komponenten nicht mehr gehen. daher muss ich wohl leider schauen ob ich in der lage bin ein Protokoll auf eine SPS zu programmieren.
 
Und ein einfacher Wrapper, der die Daten vor der Übertragung konvertiert, kommt nicht in Frage? Dann könntest du nämlich wieder das gängige Protokoll verwenden.
 
ich weis nicht was ein Wrapper ist?
muss mal auf die suche gehen.
 
Ein Wrapper ist eine Art Übersetzer. Er vermittelt den Zugriff auf irgendwelche Funktionen, die man sonst nicht ohne weiteres erreichen könnte.

Minimalbeispiel in Pseudocode:
Code:
public Connection openConnection(Adress adr, int port) { // Wrapper-Funktion
Target maschine = new Target(adr, port); // Parameter so umformen, dass die Zielfunktion damit aufgerufen werden kann
return System.openConnection(maschine); // gewrappte Funktion
}


Ich war etwas ungenau. Je nachdem wie sehr deine Vorgänger das Protokoll, von dem du geschrieben hast, verändert haben, verwendest du entweder einen Wrapper (Funktionsaufruf modifizieren) oder einen Konverter (Daten modifizieren).
 
Zurück
Oben