Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Изменение кадра изображения по битам двух переменных  (Прочитано 1418 раз)

pavlolight

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
добрый день,подскажите пожалуйста как реализовать:
есть две переменных
если бит перемеренной 1 и переменной 2  равен 0 то фрейм 1
если бит переменной 1 равен 1 а бит второй переменной равен 0 то фрейм 2
если бит переменной 1 равен 0 а бит второй переменной равен 1 то фрейм 3
если бит переменной 1 и переменной 2 равен 1 то фреим 4
« Изменён: 13 Августа 2020, 12:01:06 от Simple_Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1400
    • Просмотр профиля
Здравствуйте.

Пример работы с битами можно найти здесь - см. пример №3. Методы для работы с битами описаны здесь. Для приведенных условий код будет таким:
Код: (delphi)
begin
  if Sender is TM_Image then        // сначала убедимся, что скрипт вызван объектом "Изображение"
    with Sender as TM_Image do      // далее будем работать с объектом Sender, как с изображением
      begin
        { меняем кадр по битам переменных }
        if (GetBit(AsInt, 1) = False) and (GetBit(VariableEx.AsInt, 1) = False) then Frame := 1
          else
            if (GetBit(AsInt, 1) = True) and (GetBit(VariableEx.AsInt, 1) = False) then Frame := 2
              else
                if (GetBit(AsInt, 1) = False) and (GetBit(VariableEx.AsInt, 1) = True) then Frame := 3
                  else
                    if (GetBit(AsInt, 1) = True) and (GetBit(VariableEx.AsInt, 1) = True) then Frame := 4
      end;
end.
Это универсальный скрипт, который можно применить к любому изображению, для этого необходимо назначить его на события OnDataChange и OnDataChangeEx требуемых изображений.

pavlolight

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
спасибо ,работает