CRC16 für Datenpaket berechnen. Wie mach ich das?

  • Hallo McTristan,


    also ich hab den Link von tacticus mir angeschaut,
    und ich bin der meinung der ist in VB oder liege ich da ganz falsch.
    Also ich hab ein anderes fertiges Programm in VB aber der rechnet mir
    eine Checksumme von dem String z.B. "Hallo Welt"
    ich möchte aber eine Hex String eingeben.
    z.B. 01 03 03 02 00 14
    die Checksumme ist 41E4
    Vll kann man diesen Programml leicht umschreiben.
    Aber ich weiss nicht wie.
    ich denke man muss dort irgendwie die Bytes umwandeln oder so.
    Hier mal der Code. ich bin Anfänger also entschuldigt die nicht fachgerechten
    Ausdrücke.


    ' CRC16


    Option Explicit


    Private Sub Command1_Click()
    Dim mask, j, n, Crc As Integer

    Crc = -1 ' crc mit $ffff initalisieren
    For n = 1 To Len(Text1.Text)
    j = Asc(Mid(Text1.Text, n, 1)) ' crc immer als ascii
    Debug.Print j
    Crc = Crc Xor j
    For j = 1 To 8
    mask = 0
    If Crc / 2 <> Int(Crc / 2) Then mask = &HA001
    Crc = Int(Crc / 2) And &H7FFF: Crc = Crc Xor mask
    Next j
    Next n
    Text2.Text = Hex$(Crc) ' crc anzeigen
    End Sub

  • Na in Text1.Text steht der Text drin - im Prinzip bräuchtest du ein Byte-Array. Bin mir jetzt nicht so sicher aber es wird doch möglich sein ein Array vom Typ smallint oder byte anzulegen oder?
    Dann geht er von 1 bis Länge des Textfeldes (wäre in deinem Fall Länge des Arrays bzw. Anzahl an Bytes in dem Array) durch und wandelt das Zeichen in ein Ascii-Zeichen um - am Ende schreibt er Hexadezimal den Wert in das Form-Element "Text2.Text".
    Bin leider kein VB-Experte aber das Array müsstest du irgendwie wie folgt anlegen:


    Dim B() As Byte


    Wobei B der Variablenname ist - bei dynamischen Arrays musst du glaub ich ReDim benutzen - musst nur das Array füllen und die Funktion anpassen.

    -> Tristan @ Work <-
    --

  • Hi Mc,
    also von dieser Idee hab ich jetzt schon öfters gelesen.
    Ich danke Dir für die Hilfe. Ich werde mich mal dran setzen.
    Oje ich sehe ein langes Wochenende auf mich zukommen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!