Битовый массив в виде матрицы светодиодов

Стартовая страница › Форумы › Понять, как работает ПО › Мнемосхемы › Битовый массив в виде матрицы светодиодов

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Записи
  • #45366
    Vic616
    Участник

    Доброго времени суток!
    RapidScada 6, Mimic Editor.
    Есть задача отобразить на новой мнемосхеме матрицу светодиодов (24 х 31).
    Зажигать их надо по данным двух каналов (канал строк и канал столбцов) на основе побитного AND этих каналов.
    Задачу можно решить «в лоб» создав 24*31= 744 дорасчетных канала и каждом из которых делать GetBit соответствующих нужному светодиоду битов, но это мне кажется очень некрасиво и громоздко.
    Существует ли какая то возможность в самих свойствах диода извлекать нужные значения бит из данных каналов и на основании AND этих бит зажигать или гасить диод?
    Может кто то из уважаемого сообщества уже сталкивался с аналогичной задачей, или хотя бы подскажет направление в котором копать?
    Заранее благодарю!

    #45367
    manjey73
    Участник

    Входных канала ДВА? в одном строки 24 бита, в другом столбцы 31 бит?

    биты по идее можно же определять в javascript самого Светодиода, ну или сделать ‘светодиод’ свой. Подать на него два канала и добавить экспортируемые свойства, в которых указывать на какие биты одного и второго канала реагировать.

    а там, картинка в фейсплейте (только у этого компонента есть экспортируемые свойства) или Разметкой (расширенные компоненты — платные) используя код svg.

    Начните с картинки в фейсплейте. Недавно Михаил выкладывал пример смены картинок даже без скриптов.

    В принципе реально сделать один компонент.

    • Ответ изменён 19 часов, 39 минут назад пользователем manjey73.
    • Ответ изменён 19 часов, 39 минут назад пользователем manjey73.
    #45370
    manjey73
    Участник

    Натыкать 744 фейсплейта это будет круто 🙂

    Я бы делал на основе Разметки и svg, просто в одном фейсплейте сделал бы саму матрицу .
    з.ы. там можно сделать одно изображение светодиода и просто его масштабируя за счет ‘x’ и ‘y’ нужное количество раз.

    #45371
    Vic616
    Участник

    Спасибо за наводку!
    Да, входных каналов два.
    Попробую через JavaScript. с новым редактором мнемосхем только начал разбираться, пока всё не очень понятно. Может есть где документация по нему — почитать, поучиться?

    #45372
    manjey73
    Участник

    Дополнительная документация

    Где она находится

    Особенности PlgMimic.pdf

    Идея какая, в Разметке можно поместить код svg
    В <defs> разместить изображение ОДНОГО индикатора. При помощи use svg создать матрицу , указывая x и y каждого объекта в выключенном состоянии

    При помощи скрипта подсвечивать (менять цвет, фон, что угодно) нужный элемент.
    Использовать Уникальный ID для каждого элемента use в общем.

    Можно даже скрывать элементы use.

    как мучать можно посмотреть в моих примерах примеры

    В Маркере и в QFD есть примеры с use, ну и как цвет менять.

    #45373
    manjey73
    Участник

    з.ы. при желании можно сделать так, что вы будете задавать размер матрицы и оно само все нарисует скриптом каждый элемент по указанной сетке.

    #45380
    manjey73
    Участник

    Вот тут конечно, при создании подобных матриц, очень вредно копировать html разметку каждый раз при работе domUpdated.
    Один раз при открытии страницы в domCreated это нормально, потом только изменения.

    И так во многих вещах. Это вот на заметку Михаилу, убрать этот эффект, или сделать его управляемым из скрипта.

    • Ответ изменён 7 часов, 52 минуты назад пользователем manjey73.
    #45382
    Mikhail
    Модератор

    Существует ли какая то возможность в самих свойствах диода извлекать нужные значения бит из данных каналов и на основании AND этих бит зажигать или гасить диод?

    Добрый день!
    При привязке канала к элементу матрицы доступно свойство Выражение, которое позволяет на уровне компонента извлечь заданный бит. Таким образом, количество необходимых каналов можно уменьшить.

    #45383
    Mikhail
    Модератор

    Зажигать их надо по данным двух каналов (канал строк и канал столбцов) на основе побитного AND этих каналов.

    Попробуйте разработать фейсплейт, который будет иметь 2 соответствующих экспортируемых свойства. Внутри этого фейсплейта нужно разместить элементы, которыми будете управлять на основе значений двух свойств.
    Учитывая текущие особенности работы мнемосхем, удобнее всего внутри фейсплейта поместить компонент Разметка, внутри которой находится собственный SVG. Тогда за образец можно взять Damper.fp.

    #45384
    Mikhail
    Модератор

    Кроме того, вариант с компонентом Разметка будет достаточно оптимальным по сравнению с 744 компонентами типа Светодиод с точки зрения создания вспомогательных JavaScript объектов при работе мнемосхемы.

    #45387
    Mikhail
    Модератор

    Обратите внимание, что в JavaScript тип Number имеет ограничения. 31 бит может не поместиться в нём. Нужно проверять.

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Для ответа в этой теме необходимо авторизоваться.