Добрый день всем.
Помогите с программой расчета CRC_16 на Visual Basic 2010. Все что нашел в Интернете дает не те контрольные суммы, которые рассчитывает "Конфигуратор". К сожалению, не владею ни С++, ни Delfi.
Расчет CRC_16 на Бейсике
- ElectricOleg
- Сообщения: 63
- Зарегистрирован: 09 июн 2014, 16:21
Re: Расчет CRC_16 на Бейсике
Если ещё актуально.
Код: Выделить всё
' функция возвращает контрольную сумму CRC16 c полиномом MODBUS
Function getCRC16(inputData)
Dim x
Dim y
Dim lCRC
Dim result
lCRC = 65535 '(&HFFFF results in Integer -1)
' WScript.Echo "Len inputData = " & Len(inputData)
' WScript.Echo "inputData = " & inputData
For x = 1 To Len(inputData)
lCRC = lCRC Xor Asc(Mid(inputData, x, 1))
For y = 1 To 8
If (lCRC Mod 2) > 0 Then
lCRC = (lCRC And 65534) / 2
lCRC = lCRC Xor 40961 '(&HA001 results in whatever negative integer)
Else
lCRC = (lCRC And 65534) / 2
End If
Next
Next
'Add CRC with LSB first
getCRC16 = Chr(lCRC And 255) & Chr((lCRC And 65280) / 256)
' WScript.Echo "getCRC16 = " & getCRC16
End Function