Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сигналлы 
:(
    Опции темы
Arturlem
Дата 16.7.2019, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.7.2019

Репутация: нет
Всего: нет



Есть три события сигналов (красный - авария, желтый -предупреждение, зеленый(цвет) - нормальная работа).
Есть некий прямоугольник (объект). При выставлении определенного сигнала, должен высветиться соответствующий цвет. 
Тип данных сигнала - bool (вкл./выкл.). Для трех сигналов я написал программу. Но если этих сигналов будет 100? Ничего толкового придумать не могу. Может у кого-то будут идеи? 
К примеру: 40 сигналов -красных. 30 - зеленых. и 30 желтых.
Мне надо понять алгоритм работы. Написано это на языке сценариев CTRL
У меня должен быть приоритет, то есть если красный цвет в "1", то он должен быть в приоритете.
Это написано для трех сигналов.
Мне надо написать для 100 сигналов. То есть мне надо вместо 3 сигналов, написать для 100 сигн.


Код

void EP_setBackColorCB(string dpSource1, bool a, string dpSource2, bool b, string dpSource3, bool c)
{
  if (a == 1 && b == 1 && c == 1)
    setValue("", "backCol", "red");
  else if (a == 1 && b == 0 && c == 0)
    setValue("", "backCol", "red");
  else if (a == 1 && b == 0 && c == 1)
    setValue("", "backCol", "red");
  else if (a == 1 && b == 1 && c == 0)
    setValue("", "backCol", "red");
  else if (a == 0 && b == 1 && c == 0)
    setValue("", "backCol", "yellow");
  else if (a == 0 && b == 1 && c == 1)
    setValue("", "backCol", "yellow");
  else if (a == 0 && b == 0 && c == 1)
    setValue("", "backCol", "green");
  else 
    setValue("", "backCol", "white");
}


PM MAIL   Вверх
xvr
Дата 16.7.2019, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Arturlem @  16.7.2019,  08:56 Найти цитируемый пост)
Написано это на языке сценариев CTRL

Ой. Это что за зверь?

Цитата(Arturlem @  16.7.2019,  08:56 Найти цитируемый пост)
У меня должен быть приоритет, то есть если красный цвет в "1", то он должен быть в приоритете.

У вас 3 беcцветных сигнала - a,b и c. Судя по коду a - красный, b - желтый и c - зелёный. А если их 30?
И по какой логике они должны включать ваш квадрат?

То, что вы уже написали можно сделать так:
Код

void EP_setBackColorCB(string dpSource1, bool a, string dpSource2, bool b, string dpSource3, bool c)
{
  if (a == 1)
    setValue("", "backCol", "red");
  else if (b == 1)
    setValue("", "backCol", "yellow");
  else if (c == 1)
    setValue("", "backCol", "green");
  else 
    setValue("", "backCol", "white");
}

для 30 сигналов видимо аналогично

PM MAIL   Вверх
vol4ek
Дата 16.7.2019, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


конь в пальто
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 1.5.2011
Где: Минск

Репутация: нет
Всего: 0



switch наверное удобней будет.
PM MAIL ICQ   Вверх
Arturlem
Дата 17.7.2019, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.7.2019

Репутация: нет
Всего: нет



Цитата(xvr @ 16.7.2019,  12:25)
Цитата(Arturlem @  16.7.2019,  08:56 Найти цитируемый пост)
Написано это на языке сценариев CTRL

Ой. Это что за зверь?

Цитата(Arturlem @  16.7.2019,  08:56 Найти цитируемый пост)
У меня должен быть приоритет, то есть если красный цвет в "1", то он должен быть в приоритете.

У вас 3 беcцветных сигнала - a,b и c. Судя по коду a - красный, b - желтый и c - зелёный. А если их 30?
И по какой логике они должны включать ваш квадрат?

То, что вы уже написали можно сделать так:
Код

void EP_setBackColorCB(string dpSource1, bool a, string dpSource2, bool b, string dpSource3, bool c)
{
  if (a == 1)
    setValue("", "backCol", "red");
  else if (b == 1)
    setValue("", "backCol", "yellow");
  else if (c == 1)
    setValue("", "backCol", "green");
  else 
    setValue("", "backCol", "white");
}

для 30 сигналов видимо аналогично

Используется в scada))
Не, я написал программу для трех сигналов при трех состояниях (красный, желтый, зеленый). Допустим, я ставлю первый сигнал на "вкл", квадрат загорается красным цветом. Второй если ставлю - желтым, третий - зеленым. 
Задача заключается в том, что у меня будут 30 сигналов при трех состояниях. 10 сигналов должны быть красными, 10-зелеными, 10 - желтыми. И должен быть приоритет сигналов, то есть у красных-высокий, потом желтый, потом -зеленый. Я поэтому так написал код. К примеру, если будут включены одновременно и красный и желтый, то будет гореть красный цвет



Это сообщение отредактировал(а) Arturlem - 17.7.2019, 08:50

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  13.PNG 31,34 Kb
PM MAIL   Вверх
xvr
Дата 17.7.2019, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Тогда по ИЛИ все красные (в строке 3 в моём исходнике), потом все жёлтые (в строке 5), потом все зелёные (в строке 7)

PM MAIL   Вверх
Arturlem
Дата 18.7.2019, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.7.2019

Репутация: нет
Всего: нет



Цитата(xvr @ 17.7.2019,  16:02)
Тогда по ИЛИ все красные (в строке 3 в моём исходнике), потом все жёлтые (в строке 5), потом все зелёные (в строке 7)

Честно говоря, не понял Вас. 
Мне в добавок ко всему этому, надо приоритет выставить, то самый высокий у -красного. 
Если у меня красный стоит в 1 и зеленый в 1, должен гореть красный цвет.
PM MAIL   Вверх
xvr
Дата 18.7.2019, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Arturlem @  18.7.2019,  08:38 Найти цитируемый пост)
Мне в добавок ко всему этому,

Для начала вам нужно выкинуть свой исходник (с ним 30 сигналов не сделать), а взять из 2го сообщения этой темы.
После этого добавить туда недостающие 27 сигналов (как именно добавлять написано в 5м сообщении этой темы)

Цитата(Arturlem @  18.7.2019,  08:38 Найти цитируемый пост)
надо приоритет выставить,

Приоритет уже есть (в правильном исходнике, не у вас)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1165 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.