Показано с 1 по 5 из 5

Тема: Swap_data

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Swap_data

    Здравствуйте. Кто нибудь может подсказать как работает функция ocl.swap_data библиотеки модбас в кодесис3?
    Я имею ввиду внутренюю логику работы. Как осуществляется внутри функции работа с указателями и перестановка байт..

  2. #2

    По умолчанию

    Цитата Сообщение от Safron Посмотреть сообщение
    Здравствуйте. Кто нибудь может подсказать как работает функция ocl.swap_data библиотеки модбас в кодесис3?
    Я имею ввиду внутренюю логику работы. Как осуществляется внутри функции работа с указателями и перестановка байт..
    Вам обязательно ocl.swap_data или просто как работает функция подобного типа с указателями?

  3. #3

    По умолчанию

    Код:
    FUNCTION SWAP_BYTE : WORD
    (* Функция SWAP_BYTE меняет порядок байт переменной IN. *)
    VAR_INPUT
    	IN : WORD;
    END_VAR
    SWAP_BYTE := ROL(in,8);
    Код:
    FUNCTION SWAP_BYTE2 : DWORD
    (* Функция SWAP_BYTE2 меняет порядок байт переменной IN на обратный. *)
    VAR_INPUT
    	IN : DWORD;
    END_VAR
    
    Swap_Byte2 := (ROR(in,8) AND 16#FF00FF00) OR (ROL(in,8) AND 16#00FF00FF);
    Вот и вся магия!
    Последний раз редактировалось SlavikP; 02.09.2026 в 05:55.
    Работа не волк, а work.

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,187

    По умолчанию

    Магии нет. Но учитывая вопрос и его контекст (модбас)
    1. Не переменной, а в любом месте памяти.
    Нужно учесть возможности камня или учесть возможную некратность адреса в самой функции или предусмотреть борьбу с этим в рамках области применения функции.
    2.Кусок этой памяти - произвольного размера. По контексту - кратен 2 (но я б и на это не закладывался)

    Из исходноно вопроса следует что нужна общая универсальная функция и показать как она работает.
    Собсно там дюжина-другая строк.

    Как по мне, передавать 3 штуки буль-флажков (описание осл.сус_свап) для задачи - повод выкинуть ее в топку. 99% задач контекста можно решить 1 флажком (целое число). Из 1% оставшегося, 99% можно решить тем же флажком если подумать.

    Вообщем написать самому с 0 такую функции быстрее чем написание этого ответа. А учитывая наличие всяких алис и тп - быстрее чем задавать сам вопрос

  5. #5

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Вообщем написать самому с 0 такую функции быстрее чем написание этого ответа. А учитывая наличие всяких алис и тп - быстрее чем задавать сам вопрос
    Именно! На что и намек. Парсим булевы флажки и выбираем ветки обработки. Далее некий цикл "берем из входного потока, обрабатываем, кладем в выходной поток".
    Сама логика обработчика не сложная.
    Работа не волк, а work.

Ваши права

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