Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: CRC-16/ARC помогите перевести с С++ на мэк

  1. #11
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Вот этот кусок
    Код:
    IF WORD_TO_BOOL(crc AND 16#0001) THEN crc:= ( SHR(crc, 1) XOR 16#A001);
    ELSE crc := SHR(crc, 1); END_IF
    ... можно упростить:
    Код:
    crc := SHR(crc, 1) XOR 16#A001 * BOOL_TO_WORD(crc.0);

  2. #12
    Пользователь Аватар для Gvenihvivar
    Регистрация
    09.11.2012
    Адрес
    харьков
    Сообщений
    66

    По умолчанию

    У умножения приоритет больше чем у XOR?
    Без скобок проблем не будет?

  3. #13
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Так и надо, чтобы сначала умножалось. Я проверил, если что.

    Кстати для прикола вообще без ветвлений в один цикл переписал:
    Код:
    FOR j := 0 TO size * 8 - 1 DO
        crc := crc XOR arr[j / 8] * BOOL_TO_WORD(j MOD 8 = 0);
        crc := SHR(crc, 1) XOR (16#A001 * BOOL_TO_WORD(crc.0));
    END_FOR
    Тоже проверил. Компактнее, но медленнее (много бесполезного ксора с нулём).

  4. #14
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,646

    По умолчанию

    http://www.owen.ru/forum/showthread.php?t=17523

    Может поможет, там тоже был алгоритм на Си и вариант на ST того же кода.

  5. #15
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    а если заглянуть в бибку ОСКАТ, то там есть готовый блок расчета любых контрольных сумм

  6. #16
    Пользователь Аватар для Gvenihvivar
    Регистрация
    09.11.2012
    Адрес
    харьков
    Сообщений
    66

    По умолчанию

    да, знаю, но там много лишнего. Он ведь универсален для всего на свете.

  7. #17
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,243

    По умолчанию

    Цитата Сообщение от Gvenihvivar Посмотреть сообщение
    да, знаю, но там много лишнего. Он ведь универсален для всего на свете.
    так кто мешает, лишнее убрать, там практически вся универсальность заключается в числе ограничивающем по модулю

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Какой ПИД – регулятор выбрать на котёл ДЕ -16
    от Sasha55 в разделе Подбор Оборудования
    Ответов: 20
    Последнее сообщение: 02.04.2019, 16:02
  2. МЭК 60870-5-104
    от monteg в разделе ПЛК3хх
    Ответов: 23
    Последнее сообщение: 01.04.2016, 13:23
  3. Переход на МЭК 61850
    от Sergeus в разделе Другие SCADA системы
    Ответов: 1
    Последнее сообщение: 10.12.2013, 19:35
  4. CRC 8
    от kanadchikov в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 28.09.2012, 11:15
  5. мэк 61131-3
    от Евгений Б. в разделе Сервисное ПО
    Ответов: 1
    Последнее сообщение: 09.12.2007, 17:45

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •