Red de conocimiento informático - Problemas con los teléfonos móviles - Problemas con la comunicación de verificación CRC en VB

Problemas con la comunicación de verificación CRC en VB

Dim devuelve datos(1) como bytes

Subcomando privado 1_Click()

Mostrar CRC(2) como bytes

Devuelve d() como el byte de datos a ser transferido.

Cambiar el tamaño de datos(7) a bytes

Datos(0) = 1

Datos(1) = 3

Datos (2 ) = 0

Datos (3) = 0

Datos (4) = 0

Datos (5) = 1

Llamar CRC16 (datos, ubound (datos) -2, datos (6), datos (7))'Llame a la función de cálculo CRC16.

CRC(0) es de nivel alto.

CRC(1) es de nivel bajo.

Conector final

La función CRC16 (datos() son bytes, I es un número entero, ByRef ReturnDatalo es bytes, ByRef ReturnDatahi es bytes) es una cadena

' Dimcrc16lo asbyte, crc16hi asbyte' registro CRC

Dim CL es byte, CH es byte' código polinómico HA001

Dim SaveHi es byte, SaveLo es byte

Bandera tenue en forma de número entero

CRC 16Lo = amp HFF

CRC 16Hi = amp HFF

CL = ampH1

p>

CH = amp ha 0

Para i = 0 a UBound(data)-2

Crc16lo = crc16lo xor data(I)' cada dato con registro Crc Realice la operación xor.

Para banderas = 0 a 7

SaveHi = CRC16Hi

SaveLo = CRC16Lo

' CRC16Hi = CRC16Hi \ 2 'Desplazar bit alto correcto Una persona.

"CRC16Lo = CRC16Lo \ 2" mueve el bit bajo un bit hacia la derecha.

If ((SaveHi and amph 1) = amp; H 1) Si el último bit del byte alto es 1.

CRC 16Lo = CRC 16Lo O amp; H80 ', el byte de orden inferior se desplaza hacia la derecha, seguido de 1.

' End If 'De lo contrario, se completará automáticamente con 0.

Si ((SaveLo and amph 1) = amp;H1) entonces, si LSB es 1, realice XOR con el código polinómico.

CRC16Hi = CRC16Hi XOR canal

CRC 16Lo = CRC 16Lo Xor CL

Terminará si...

Siguiente bandera

Siguiente yo

ReturnDatahi = CRC16Hola 'bit alto CRC.

ReturnDatalo = CRC16Lo 'Bit CRC bajo.

Finalizar función

Este programa ha pasado la prueba, puedes probarlo.