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
Filed under: Programación | Tagged: Automoviles, calculo, CRC, Equipamiento, medicion, Muller | Leave a comment »