Veto DAS-8000 Manual De Instrucciones página 161

Tabla de contenido
env = env & Chr$(0) & Chr$(cant)
crc = CRC16(env)
'Añadir el CRC al mensaje
balto = CInt((crc And &HFF00&) \ &H100&) And &HFF& 'byte alto del CRC
bbajo = CInt(crc And &HFF&)
env = env & Chr$(bbajo)
env = env & Chr$(balto)
'Enviar el mensaje
ReDim TBytes(1 To Len(env))
While b < Len(env)
b = b + 1
TBytes(b) = AscB(Mid(env, b, 1))
Wend
Comm.Output = TBytes()
'Esperar la respuesta
While Comm.InBufferCount <> nbytes
DoEvents
Wend
'Retornar la información recibida
Erase TBytes
b = 0
env = ""
TBytes() = Comm.Input
While b < nbytes
env = env & Chr$(TBytes(b))
b = b + 1
Wend
Preguntar = env
End Function
'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.
Private Function CRC16(datos As String) As Long
Dim flag
Dim crc
Dim car
Dim bit
On Error Resume Next
crc = &HFFFF&
For car = 1 To Len(datos)
crc = crc Xor Asc(Mid$(datos, car, 1))
For bit = 0 To 7
Next bit
Next car
CRC16 = crc
End Function
As Byte
As Long
As Long
As Integer
As Integer
flag = crc And &H1&
crc = crc \ 2&
If flag = 1& Then crc = crc Xor &HA001&
DAS-8000 ver. 2.5
'cantidad de palabras
'Calcular el CRC
'byte bajo del CRC
Comunicaciones
/ 161
Tabla de contenido
loading

Tabla de contenido