Private Sub CRC16A(Buffer() As Byte) As Long
Dim i As Long
Dim Temp As Long
Dim crc As Long
Dim j As Int
crc = 0xHFFFF
'For i = LBound(Buffer) To UBound(Buffer)
For i = 0 To Buffer.Length - 1
Temp = Buffer(i) * 0xH100
'crc = crc Bit.Xor Temp
crc = Bit.Xor (crc ,Temp)
For j = 0 To 7
'If (crc Bit.And 0xH8000) Then
If Bit.And(crc, 0xH8000) Then
' crc = ((crc * 2) Bit.Xor 0xH1021) And 0xHFFFF
crc = Bit.And( Bit.Xor((crc * 2), 0xH1021), 0xHFFFF)
Else
'crc = (crc * 2) Bit.And 0xHFFFF
crc = Bit.And( (crc * 2), 0xHFFFF)
End If
Next
Next
Return Bit.And( crc,0xHFFFF)
End Sub