Private Function CRC16(data() As Byte) As String
Dim CRC16Hi As Byte
Dim CRC16Lo As Byte
CRC16Hi = &HFF
CRC16Lo = &HFF
Dim i As Integer
Dim iIndex As Long
For i = 0 To UBound(data)
iIndex = CRC16Lo Xor data(i)
CRC16Lo = CRC16Hi Xor GetCRCLo(iIndex) '低位处理
CRC16Hi = GetCRCHi(iIndex) '高位处理
Next i
Dim ReturnData(1) As Byte
ReturnData(0) = CRC16Hi 'CRC高位
ReturnData(1) = CRC16Lo 'CRC低位
CRC16 = ReturnData
End Function
Private Sub Command1_Click()
Dim SendStr(6) As Byte
SendStr(0) = &H11
SendStr(1) = &H3 '读多个字的命令代码
SendStr(2) = &H3 '起始地址高字节
SendStr(3) = &HEB '起始地址低字节
SendStr(4) = &H0 '数据长度高字节
SendStr(5) = &H3 '数据长度低字节?????
Call CRC16(SendStr(), 5) 'CRC计算
SendStr(6) = ReturnData
T1 = SendStr(6)
End Sub
Dim CRC16Hi As Byte
Dim CRC16Lo As Byte
CRC16Hi = &HFF
CRC16Lo = &HFF
Dim i As Integer
Dim iIndex As Long
For i = 0 To UBound(data)
iIndex = CRC16Lo Xor data(i)
CRC16Lo = CRC16Hi Xor GetCRCLo(iIndex) '低位处理
CRC16Hi = GetCRCHi(iIndex) '高位处理
Next i
Dim ReturnData(1) As Byte
ReturnData(0) = CRC16Hi 'CRC高位
ReturnData(1) = CRC16Lo 'CRC低位
CRC16 = ReturnData
End Function
Private Sub Command1_Click()
Dim SendStr(6) As Byte
SendStr(0) = &H11
SendStr(1) = &H3 '读多个字的命令代码
SendStr(2) = &H3 '起始地址高字节
SendStr(3) = &HEB '起始地址低字节
SendStr(4) = &H0 '数据长度高字节
SendStr(5) = &H3 '数据长度低字节?????
Call CRC16(SendStr(), 5) 'CRC计算
SendStr(6) = ReturnData
T1 = SendStr(6)
End Sub


