Deutsch
Quelltexte/ Codesnippets

CRC16-Checksummen-Streamtest

 

p.specht

Eine Erweiterung des schon behandelten CRC-8 Prüfsummenverfahrens auf 16 bit-Words. Im Gegensatz zu anderen Verfahren wird hier nicht auf vorberechnete Polynomtabellen zurückgegriffen, sondern es werden Shiftbefehle benutzt. Reine Demo für private Zwecke - es dürften Rechte Dritter existieren!
CLS
' DEMO ONLY! NO WARRANTY WHATSOEVER! ALL RIGHTS APPLY TO THEIR RESPECTIVE OWNERS!
def &IBM = $A001' Used by Bisync, Modbus, USB, ANSI X3.28, SIA DC-07, ...
def &CCITT=$8408' Used by X.25, V.41, HDLC FCS, XMODEM, Bluetooth, PACTOR, SD
def &SCSI =$EDD1' Used by SCSI
Def %CRC16POLY &CCITT' $18 wäre z.B. X^8+X^5+X^4+X^0
Var CRC16_Sp% = 0' CRC16 Speicher

proc CRC16_berechnen :Parameters crc_data%' Übergabe Daten

    Var bit_counter% = 16' Schleifendurchlauf
    Var feedback_bit% = 0' Bit Rückgabe

    while bit_counter% > 0' 8x Durchläufe

        feedback_bit% = Xor(CRC16_Sp%,crc_data%) & $01' XOR auf 1 überprüfen

        if feedback_bit% = $01' wenn 1, dann...

            CRC16_Sp% = Xor(CRC16_Sp%,%CRC16POLY)' XOR mit Poly

        EndIf

        CRC16_Sp% = (CRC16_Sp% >> 1) & $7FFF' Shift rechts & 32767  '$7F=247  <<<<<<

        if feedback_bit% = $01' wenn 1, dann...

            CRC16_Sp% = CRC16_Sp% | $8000' 32768    'ODER 128   <<<<<<<<<<<<<<<

        EndIf

        crc_data% = crc_data% >> 1' Daten Shift rechts
        Dec bit_counter%' Schleifendurchlauf -1

    EndWhile' Ende Endlosschleife

endproc

Testaufruf:
CRC16_Sp% = 0' Reset CRC8 Speicher

WhileLoop 0,2^16-1, 7' Chr$(0)+Chr$(0) bis Chr$(255)+Chr$(255) durchlaufen mit Step 7

    CRC16_berechnen(&Loop)' CRC berechnen
    Print "Daten="+Str$(&Loop)+"   CRC16="+Str$(CRC16_Sp%),
    ' Und nun als Binärwert unter Anschluß der Prüfsumme rückprüfen, muss dann 0 ergeben:"
    CRC16_berechnen(val("%"+right$("0000000000000000"+bin$(&Loop),16)+right$("0000000000000000"+bin$(CRC16_Sp%),16)) )
    Print tab(40);"Errorflag: ";Str$(CRC16_Sp%)

EndWhile

waitinput
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
19.05.2021  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.329 Betrachtungen

Unbenanntvor 0 min.
Axel Berse17.06.2024
Member 361000504.08.2022
p.specht21.11.2021
R.Schneider20.11.2021
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

p.specht (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie