Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 18.07.2019, 12:52   #21
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Я уже не уверен. Вроде изначально шел разговор, что на каждый выходный по своему сигналу к ж з и в зависимости от них результирующий цвет.
Если все сигналы в нуле, то должен выставиться белый цвет.
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 13:04   #22
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Начнем с протого:
Сколько выходных сигналов/цветов у вас? Заисит ли кол-во выходных от кол-ва входных сигналов?
Вот мои 10 сигналов(Single point).
Например: Ставлю на "on" первый сигнал, мой прямоугольник на форме загорается красным цветов.
Изображения
Тип файла: png 15.PNG (26.5 Кб, 138 просмотров)
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 13:05   #23
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Ваши ВХОДНЫЕ 10 сигналов мы уже вторую страницу наблюдаем. ВЫХОДНЫХ сколько? ОДИН?
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 13:13   #24
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Ваши ВХОДНЫЕ 10 сигналов мы уже вторую страницу наблюдаем. ВЫХОДНЫХ сколько? ОДИН?
да)
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 13:17   #25
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Хорошо. Теперь следущий шаг - зависимости. Допустим с 1 м красным, 1м желтым разобрались. Есть 2й красный и 1й желтый - выход? А если 2й, 3й красный и 1й, 4й зеленый?
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 13:24   #26
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Хорошо. Теперь следущий шаг - зависимости. Допустим с 1 м красным, 1м желтым разобрались. Есть 2й красный и 1й желтый - выход? А если 2й, 3й красный и 1й, 4й зеленый?
Если 2й красный и 1й желтый - красный.
если 2й, 3й красный и 1й, 4й зеленый -красный.
если 1й желтый и 2ой, 4ый зеленый - желтый.

То есть, если хотя бы один сигнал будет красным в единице, то объект будет красным. Если "красные" сигналы в нуле, то в приоритете будет желтый. Если в желтые сигналы в нуле, то тогда зеленый.
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 13:34   #27
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Отлично. Делаем простой вариант:
1. Групируем сигналы
Код:
 mRed = {r1, r2, r3, ... }
 mYellow = {y1, y2, y3, ...}
 mGreen = {g1, g2, g3, ...}
2. Заводим булевую/интовую переменную:
Код:
 bool B = false; (int B = 0;)
3. Анализируем красные
Код:
 for(i = 0; i < mRed.length; ++i)
   if(mRed[i] == 1){
     B = true; (B = 1;)
     break;
  }
4. Реагируем на флаг
Код:
  if (B) setColor('Red);
5. Если нет - продолжаем
Код:
  else{
6. повторяем пункты 3 и 4 для осталных массивов
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 13:37   #28
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Отлично. Делаем простой вариант:
1. Групируем сигналы
Код:
 mRed = {r1, r2, r3, ... }
 mYellow = {y1, y2, y3, ...}
 mGreen = {g1, g2, g3, ...}
2. Заводим булевую/интовую переменную:
Код:
 bool B = false; (int B = 0;)
3. Анализируем красные
Код:
 for(i = 0; i < mRed.length; ++i)
   if(mRed[i] == 1){
     B = true; (B = 1;)
     break;
  }
4. Реагируем на флаг
Код:
  if (B) setColor('Red);
5. Если нет - продолжаем
Код:
  else{
6. повторяем пункты 3 и 4 для осталных массивов
Сейчас попробую. Спасибо
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 15:30   #29
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Я чуть-чуть под этот язык сценариев CTRL переделал. Не работает. Может Вы найдете ошибку тут у меня где-то

Код:
main()
{
  EP_setBackColor();

}

void EP_setBackColor()
{
  dyn_errClass err;

 if( !dpExists( "System1:SP1.SP1:_online.._value") || !dpExists( "System1:SP2.SP2:_online.._value") || !dpExists( "System1:SP3.SP3:_online.._value") 
       || !dpExists( "System1:SP4.SP4:_online.._value") || !dpExists( "System1:SP5.SP5:_online.._value") || !dpExists( "System1:SP6.SP6:_online.._value") ||
       !dpExists( "System1:SP7.SP7:_online.._value")|| !dpExists( "System1:SP8.SP8:_online.._value")|| !dpExists( "System1:SP9.SP9:_online.._value") ||
       !dpExists( "System1:SP10.SP10:_online.._value"))
  {
    setValue("", "color", "black");
    return;
  }

    dpConnect("EP_setBackColorCB", "System1:SP1.SP1:_online.._value", "System1:SP2.SP2:_online.._value", "System1:SP3.SP3:_online.._value"
            , "System1:SP4.SP4:_online.._value","System1:SP5.SP5:_online.._value", "System1:SP6.SP6:_online.._value", "System1:SP7.SP7:_online.._value"
            , "System1:SP8.SP8:_online.._value", "System1:SP9.SP9:_online.._value", "System1:SP10.SP10:_online.._value");


  err = getLastError();
  if (dynlen(err) > 0)
    setValue("", "color", "black");
}




void EP_setBackColorCB (string dpSource1, bool a, string dpSource2, bool b, string dpSource3, bool c,
                        string dpSource4, bool d, string dpSource5, bool e, string dpSource6, bool f,
                        string dpSource7, bool g, string dpSource8, bool k, string dpSource9, bool l,
                        string dpSource10, bool m)

{  
  int sign;
  sign[1] = makeDynInt(a,b,c,d);
  sign[2] = makeDynInt(e,f,g);
  sign[3] = makeDynInt(k,l,m);
 // mRed = {a,b,c,d}
 // mYellow = {e,f,g}
//  mGreen = (k,l,m) 
  bool var = false;
  
  for (i=0; i < sign[1].length; i++)
    if(sign[1][i] == 1)
    {
     var = true;
     break;   
  }
  if (var) 
  // setColor("Red");
    setValue("", "backCol", "red");

  else 
  {
    for(i = 0; i < sign[2].length; ++i)
    if(sign[2][i] == 1)
      {
     var = true; 
     break;
    }
       if (var) 
      setValue("", "backCol", "yellow");
     
  
    else 
       {
    for(i = 0; i < sign[3].length; ++i)
    if(sign[3][i] == 1)
      {
     var = true; 
     break;
  }
       if (var) 
      setValue("", "backCol", "green");
        
   
     }
}
}

Последний раз редактировалось Arturlem; 18.07.2019 в 15:53. Причина: Опечатка
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 16:21   #30
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Ошибка в первой строчке. Вы читает то, что пишите?

Код:
int sign;
sign[1] = makeDynInt(a,b,c,d);
Объявить целое и присвоить его биту массив... никаких вопросов не возникает?

Посмотрел я синтаксис контрола и вообще все проще делается. И да length не так получается у дин. массивов...

Вам надо написать фактически три условия
Код:
if (dynContains(mRed, 1) > 0)
  setColor('Red');
else if (dynContains(mYellow, 1) > 0)
  setColor('Yellow');
else if (dynContains(mGreen, 1) > 0)
  setColor('Green');
else
  setColor('White');
p51x вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сигналы из вне JohnSh C# (си шарп) 2 10.11.2016 22:38
QT - сигналы Базиля Помощь студентам 13 06.10.2013 19:39
Сигналы Yelisey Общие вопросы C/C++ 1 08.05.2011 17:54
сигналы в Qt! marselik Qt и кроссплатформенное программирование С/С++ 1 25.11.2010 00:29


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS