programa vb, suma de comprobación crc
'Datos de salida Text2.Text2
Dim ReturnData(1) As Byte
Subcomando privado1_Click()
Dim CRC(2) Como Byte
Dim d(6) Como Byte 'Datos a transmitir
Redim datos(7) Como Byte
Para i = 0 a 5
datos(i) = "amp;h" Mid(Text1.Text, 2 * i 1, 2)
Depurar.Imprimir datos (i)
Siguiente i
Llamar a CRC16(data, UBound(data) - 2, data(6), data(7)) 'Llamar a la función de cálculo CRC16
' CRC(0) es alto
' CRC(1) es bajo
End Sub
Función CRC16(data() como byte, i como entero, ByRef ReturnDatalo como byte, ByRef ReturnDatahi como byte) como cadena
Dim CRC16Lo como byte, CRC16Hi como byte 'registro CRC
Dim CL como byte, CH como byte 'Código polinomial amp;
Dim SaveHi como byte, SaveLo como byte
Dim Flag como entero
CRC16Lo = amp; HFF
Dim CRC16Lo = amp; HFF
Como cadena
Dim CRC16Lo como byte, ByRef ReturnDatahi como byte amp HFF
CRC16Hi = amp HFF
CL; = amp; H1
CH = amp; HA0
Para i = 0 A UBound(datos) - 02
CRC16Lo = CRC16Lo Xor datos(i) ' Cada dato se distingue del registro CRC
For Flag = 0 To 9
SaveHi = CRC16Hi
SaveLo = CRC16Lo
CRC16Lo = CRC16Lo
CRC16Lo = CRC16LoCRC16Lo \ 2 'Desplaza el bit alto un bit hacia la derecha
CRC16Lo = CRC16Lo \ 2 'Desplaza el bit bajo un bit hacia la derecha
If ((SaveHi And amp; H1) = amp; H1) Then 'Si el último bit del byte alto es 1
CRC16Lo = CRC16Lo O amp H80 'Entonces el byte bajo es desplazado a la derecha en 1
End If 'De lo contrario, se agregará 0 automáticamente
If ((SaveLo And
amp;H1) = amp;H1) Entonces 'si LSB es 1, use código polinómico para la diferenciación
CRC16Hi = CRC16Hi Xor CH
CRC16Lo = CRC16Lo Xor CL
Fin si
Siguiente bandera
Siguiente i
ReturnDatahi = CRC16Hi 'CRC alto
ReturnDatalo = CRC16Lo 'CRC bajo p>
Depurar. /p>
Text2.Text = Text1.Text amp;