Desin Instruments DAS- 8000 Serie Instrucciones Avanzadas página 14

Tabla de contenido

Publicidad

Ejemplos en C y BASIC para el cálculo del CRC-16
Función para generar CRC-16 en C
La función tiene dos argumentos:
unsigned char* pMsg : Un puntero al mensaje.
unsigned short sLen : La cantidad de bytes que contiene el mensaje.
unsigned short CRC16( unsigned char* pMsg, unsigned short sLen)
{
unsigned bit, crc, flag;
crc = 0xFFFF;
while( sLen > 0 ) {
}
return( crc );
}
'Cálculo del CRC
'NOTA: Aunque el CRC es un INTEGER, se trabaja con LONG con el fin de poder tratar
el bit de más peso de un entero (el de signo) sin problemas. BASIC no maneja
números sin signo.
Function CRC16( Datos As String ) As Long
Dim flag
Dim crc As Long
Dim car As Integer
Dim bit
crc = &hFFFF&
For car = 1 To Len( Datos )
Next car
CRC16 = crc
End Function
14
crc ^= *(( unsigned char* )pMsg );
for( bit = 0; bit < 8; bit++ ) {
flag = crc & 1;
crc >>= 1;
if( flag == 1 ) crc ^= 0xA001;
}
pMsg++;
sLen++;
As Long
As Integer
crc = crc Xor Asc(Mid$( Datos, car, 1 ))
For bit = 0 To 7
flag = crc And &h1&
crc = crc \ 2&
If flag = 1& Then crc = crc Xor &hA001&
Next bit

Publicidad

Tabla de contenido
loading

Este manual también es adecuado para:

Ls-3000 serieMs-5000 serieHs-7000 serie

Tabla de contenido