Simple-Scada forum
Simple-Scada 2 => Ваши вопросы => Тема начата: Серега от 07 Сентября 2020, 14:36:27
-
Добрый день!
Задача: из разных чисел формата int собрать, например word переслать его по сети дальше.
Допустим номер объекта в очереди 3 (не более 7) первых 3 бита. (номер бита в слове 0, 1, 2)
Далее наличие у объекта системы дверей - 1 бит (номер бита 3)
Количество дверей справа у объекта, например 3 и 1 и 3 двери заблокированы (для количества с 4 по 6 биты, далее каждый бит за одну дверь).
Надеюсь понятно объяснил.
Пока есть вариант конкретно привязывать установку одиночных битов через SetBit.
Далее конкретные числа, занимающие более одного бита устанавливать так же через SetBit через повтор и if.
Но возможно опять не дочитал в справке есть более простой способ.
Можете указать направление?
И как бы подвопрос. Можно ли как то в свойстве переменной, например "Формат", указать отображение переменной в битовом виде. То есть если значение равно 3, то отобразить "0011"?
-
Здравствуйте.
Все функции для работы с битами описаны здесь (https://simple-scada.com/help/script/work-bits.html). Также компилятор поддерживает битовые сдвиги через shr (http://www.delphibasics.ru/Shr.php) и shl (http://www.delphibasics.ru/Shl.php). Если данные функции не подходят и у вас "сложная" последовательность битов,то нужно проходить по каждому биту и выделять нужные данные через getBit и т.п..