Расчет CRC_16 на Бейсике

Ответить
Аватара пользователя
ElectricOleg
Сообщения: 63
Зарегистрирован: 09 июн 2014, 16:21

Расчет CRC_16 на Бейсике

Сообщение ElectricOleg »

Добрый день всем.
Помогите с программой расчета CRC_16 на Visual Basic 2010. Все что нашел в Интернете дает не те контрольные суммы, которые рассчитывает "Конфигуратор". К сожалению, не владею ни С++, ни Delfi.
Аватара пользователя
sakhtepl
Сообщения: 1
Зарегистрирован: 03 окт 2020, 10:10

Re: Расчет CRC_16 на Бейсике

Сообщение sakhtepl »

Если ещё актуально.

Код: Выделить всё

' функция возвращает контрольную сумму 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

Ответить

Вернуться в «Программное обеспечение для счётчиков (кроме PLC)»