Tag Archives: Obd2

Find the CRC of OBDII Packet VB6

Function FindCRC(Value)
   Dim val(5) As Byte
   value1 = Left(Value, 2)
   value2 = Mid(Value, 4, 2)
   value3 = Mid(Value, 7, 2)
   value4 = Mid(Value, 10, 2)
   value5 = Right(Value, 2)
   val(1) = "&H" & value1
   val(2) = "&H" & value2
   val(3) = "&H" & value3
   val(4) = "&H" & value4
   val(5) = "&H" & value5
   FindCRC = Hex(CalcCRC(val))
End Function

Function for VB6, (place it in a module) to find the CRC of incoming data on the BR-3 OBDII module.

Calculate the OBD CRC Packet VB6

Function CalcCRC(s() As Byte) As Byte
   checksum = 0
   crcreg = 255
   length = UBound(s) - LBound(s)
   For i = 1 To length
       bitpoint = 128
       x = s(i)
       For k = 0 To 7
           If bitpoint And x Then
               If crcreg And 128 Then
                   poly = 1
               Else
                   poly = 28
               End If
               crcreg = (((crcreg * 2) Or 1) Xor poly) And 255
           Else
               If crcreg And 128 Then
                   poly = 29
               Else
                   poly = 0
               End If
               crcreg = ((crcreg * 2) Xor poly) And 255
           End If
           bitpoint = bitpoint \ 2
       Next k
   Next
   CalcCRC = (Not crcreg) And 255
End Function

VB6 function, (place it in a module) that will calculate the crc hex packet to use with the BR-3 OBDII unit.