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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

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

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

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

Цитата:
Сообщение от 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
Сообщений: 14,666
Репутация: 2631
По умолчанию

Отлично. Делаем простой вариант:
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
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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
Репутация: 10
По умолчанию

Я чуть-чуть под этот язык сценариев 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
Сообщений: 14,666
Репутация: 2631
По умолчанию

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

Код:
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 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сигналы из вне 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


08:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.