Cálculo del dígito de control VB CRC
Dim CRC16Lo como byte, CRC16Hi como byte 'registro CRC
Dim CL como byte, CH como byte 'Código polinomial&
Dim CRCLo como cadena, CRCHi como cadena
Dim SaveHi como byte, SaveLo como byte
Dim i como entero
Dim Flag Como entero
CRC16Lo = &HFF
CRC16Hi = &HFF
CL = &H1
CH = &HA0
For i = 0 To UBound(data)
CRC16Lo = CRC16Lo Xor data (i) 'Xor cada dato con el registro CRC
For Flag = 0 To 7 p>
SaveHi = CRC16Hi
SaveLo = CRC16Lo
CRC16Hi = CRC16Hi \ 2 'Mueve el bit alto un bit hacia la derecha
CRC16Lo = CRC16Lo \ 2 'Desplaza el bit bajo un bit hacia la derecha
If ((SaveHi And & H1) = &H1) Then 'Si el último bit del byte alto es 1
CRC16Lo = CRC16Lo Or &H80 ' De lo contrario, el byte bajo se desplaza un bit a la derecha
End If 'De lo contrario, es automáticamente 0
If ((SaveLo And &H1) = &H1 ) Luego 'Si el LSB es 1, utilice el código polinómico diferenciado
CRC16Hi = CRC16Hi Xor CH
CRC16Lo = CRC16Lo Xor CL
End If
Siguiente bandera
Siguiente i
Si Len(Hex(CRC16Hi)) = 1, entonces
CRCHi = "0" + Hex(CRC16Hi) )
De lo contrario
CRCHi = Hex(CRC16Hi)
Fin si
Si Len(Hex(CRC16Lo)) = 1 entonces
CRCLo = "0" + Hex(CRC16Lo)
De lo contrario
CRCLo = Hex(CRC16Lo)
Finalizar si
CRC16 = CRCLo + CRCHi
Finalizar función