Red de conocimiento informático - Problemas con los teléfonos móviles - programa vb, suma de comprobación crc

programa vb, suma de comprobación crc

'Text1.Datos de entrada de texto

'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

Depurar. /p>

Text2.Text = Text1.Text amp;