Muller – Equipamiento para medicion de Automoviles calculo del CRC

Este dato lo posteo para que aprendan todos aquellos / as a los que les gusta negar informacion o bien quieren cobrar, no por su inteligencia, sino por su negacion a compartir 🙂

El siguiente codigo (hecho por nosotros en Visual Basic 6) Logra calcular el CRC solicitado por Muller para poder comunicarse con los equipos de medicion de autos.

Inicialmente solamente teniamos un manualcito que no decia mucho respecto. En fin aca esta el codigo explicado para que cualquiera le pueda sacar provecho. Si alguien lo necesita en java tambien lo podemos postear.

Explicacion del manual:

Mnemonic :

 

 

Stx97007824AEtxCC

Eot

Format in ASCII : 0239373030373832344103CC04

Crc calculation (CC) :

sum of bytes : 02H+39h+37h+30h+30h+37h+38h+32h+34h+41h+03h=1EBh

Crc in hexadecimal: EBh (two characters in hexadecimal)

Crc in ASCII code : 4542

Complete message format : 0239373030373832344103454204

‘ 0239373030373832344103

 

Codigo:
Public Function calculaCRC(STR As String) As String
Dim strLength As Long, ptrLengthField As Long
Dim ptr As Long
Dim valorString As String
Dim valorASC As Integer
Dim valorHEX As Long
Dim salida As String
Dim I As Integer, j As Integer, c As Variant, crc As Long
crc = 0
strLength = Len(STR)
For I = 1 To strLength
    c = Val(«&H» & Mid(STR, I, 2))
    crc = crc + c
    I = I + 1
Next
‘hasta aca llegue al 1EB
valorString = Hex(crc)
valorString = Right(valorString, 2) ‘ dos caracteres en codigo Hexadecimal.
strLength = Len(valorString)
salida = «»
For I = 1 To strLength
   c = Mid(valorString, I, 1)
   valorASC = Asc(c)
   valorHEX = Hex(valorASC)
   salida = salida & valorHEX
Next
calculaCRC = salida
End Function