Стартовая страница › Форумы › Новые идеи › Перечисление и биты
- В этой теме 4 ответа, 2 участника, последнее обновление 5 часов, 8 минут назад сделано
manjey73.
-
АвторСообщения
-
09.06.2026 в 13:14 #43802
manjey73УчастникСобственно есть битовая маска с авариями.
0 — норма
1 — некая авария.Сейчас делаю при помощи перечислений на каждый бит:
Норма: green; Е1 Ошибка датчика влажности: red Норма: green; Е2 Ошибка датчика теплоносителя ЖТУ: redа хотелось бы сделать таким образом: Сделать всего ОДНО перечисление
Норма: green Е1 Ошибка датчика влажности: red Е2 Ошибка датчика теплоносителя ЖТУ: redА в столбце Формат ввести вот такую запись (например у меня само перечисление имеет наименование TableError)
TableError.1
TableError.2 (нулевой вариант для перечисления всегда Норма)Ну или типа двойной записи TableError.0,TableError.2 (то есть конкретный бит сравнивается только с 0 и 2 записи Формата.
з.ы. это больше для Таблиц. Для Мнемосхем вроде как сравнение есть, хотя не уверен, что там Перечисления работают сильно иначе.
09.06.2026 в 13:39 #43803
manjey73Участникз.ы. вероятно тут требуется, чтобы ячейка таблицы позволяла себя редактировать, кроме выбора из списка Перечислений. Чтобы была возможность указывать еще и биты.
09.06.2026 в 15:07 #43813
MikhailМодераторЧтобы для одного канала отображались сразу значения по каждому биту без разделения на отдельные каналы для каждого бита?
09.06.2026 в 15:41 #43817
manjey73УчастникНе совсем. есть Регистр = 0, значит ошибок нет — Норма.
Получается, что для каждого бита регистра 0 = Норма, 1 в бите это ошибка.По этому есть вариант сделать ОДНО общее перечисление, где 0 это Норма, а Ошибка.Номер_бита это есть ошибка.
Только тут Err.0 это тоже ошибка, то есть когда 0 бит поднят в 1.
То есть общее перечисление у нас скорее всего должно заканчиваться понятием Норма (ну для case это своего роде default значение. А 0-15 или 0-31 это и есть поднятые биты.
соответственно в расчетных каналах с формулами GetBit у нас Формат для каждого будет CaseError.0 для 0-ого бита, CaseError.12 для 12-ого бита.
А перечисление заполнено одно единственное, а не ХХХ штук, как я сейчас наделал 🙂
Просто для Таблицы я ничего умнее не придумал. Я даже сделал вот так; Е1 Ошибка датчика влажности: redто есть стер вообще слово «Норма»09.06.2026 в 15:43 #43818
manjey73Участникфактически Формат каждого расчетного канала с GetBit выглядит таким образом
CaseError.x — где x это номер бита, который мы вытаскиваем и соответствует записи Перечисления.
Если там ничего — то Норма (default «Норма» или «» ничего не отображать) -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.