Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2019, 16:38   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так зачем вам этот массив порядковых номеров dd_IntArray?

Цитата:
Сообщение от Arturlem Посмотреть сообщение
Цвет, чтобы зависел от входных сигналов, мне надо просто использовать вместе i a,b,c?
Нет. У вас же для каждого цвета свои a,b,c.
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 10:36   #12
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Так зачем вам этот массив порядковых номеров dd_IntArray?


Нет. У вас же для каждого цвета свои a,b,c.
Код:
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)
Для каждого сигнала, в данном случае, у нас 10 их есть свои a,b,c,d,e,f,g,k,l,m.

Теперь мне нужно создать цикл?
Код:
 { if (var < 4) 
     setValue("", "backCol", "red");
  if (var < 7)
      setValue("", "backCol", "yellow");
  if (var < 10) 
    setValue("", "backCol", "green");
    else 
    setValue("", "backCol", "white");
}
а var это и есть a,b,c,d,e,f,g,k,l,m.
int var[10] = {a,b,c,d,e,f,g,k,l,m}.

но потом как программа должна понять/реагировать, что если a==1 - вкл. a==0 -выкл?
a,b,c,d -красные;
e,f,g - желтые;
k,l,m - зеленые.
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 11:18   #13
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Arturlem Посмотреть сообщение
в данном случае, у нас 10
Почему не кратно 3?

Цитата:
Сообщение от Arturlem Посмотреть сообщение
Теперь мне нужно создать цикл?
Можете и цикл сделать

Цитата:
Сообщение от Arturlem Посмотреть сообщение
но потом как программа должна понять/реагировать, что если a==1 - вкл. a==0 -выкл?
Цитата:
Сообщение от Аватар Посмотреть сообщение
если a то красный // и без разницы b и c
иначе если b то желтый // и без разницы c
иначе если c то зеленый
иначе белый
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 11:28   #14
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Почему не кратно 3?
ну я просто взял 10 сигналов, там их может быть хоть 10тыс.
Мне главное придумать такой алгоритм, чтобы я не перебирал все условия для 10 тыс сигналов.

цикл, который Вы мне написали для трех букв я сделал. А если их будет 10 букв? все 10 букв писать? а цветов всего 3 у меня. Мне же не подходит этот цикл, если у меня больше трех букв.
Цитата:
a,b,c,d -красные;
e,f,g - желтые;
k,l,m - зеленые.
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 11:35   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Сообщение от Arturlem Посмотреть сообщение
30 сигналов при трех состояниях. 10 сигналов должны быть красными, 10-зелеными, 10 - желтыми
вот из этих 10, которые для красного, в цикле и определить - а есть ли хотя бы один включеный. Если есть - то красный, иначе то же самое для желтых и т.д. Если алгоритм еще правильно понял ) А то может еще если красных только 2, а желтых 5, то желтый более приоритетный. Ну это уже другая песня )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.07.2019, 11:36   #16
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Arturlem Посмотреть сообщение
А если их будет 10 букв?
Если сигналы не зависимы, то должно быть 30 входных параметров.

Цитата:
Сообщение от Arturlem Посмотреть сообщение
все 10 букв писать?
Или писать цикл и пусть для 10 букв перебирает железка.

Цитата:
Сообщение от Arturlem Посмотреть сообщение
а цветов всего 3 у меня
Это не для кого тайной не было с самого начала. Вопрос в том почему кол-во входных сигналов не кратно 3. Почему для 4го выходного нет желтого и зеленого?

Цитата:
Сообщение от Arturlem Посмотреть сообщение
Мне же не подходит этот цикл, если у меня больше трех букв.
Отлично подходит. Если полжили кжзкжзкжз..., то цикл с шагом 3 и сравнения с m[i], m[i+1], m[i+2]
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 11:37   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

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

Цитата:
Сообщение от p51x Посмотреть сообщение
Или писать цикл и пусть для 10 букв перебирает железка.
4 первых сигнала, я определил как красные, потом 3- желтые, 3 зеленые.
И мне надо сохранить при этом приоритет (красный -высокий, потом желтый, потом зеленый).
Код:
 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)
{
 dyn_int var;
 var = makeDynInt(a,b,c,d,e,f,g,k,l,m);
  if (var < 4) 
     setValue("", "backCol", "red");
  if (var < 7)
      setValue("", "backCol", "yellow");
  if (var < 10) 
    setValue("", "backCol", "green");
    else 
    setValue("", "backCol", "white");
}
Вот весь мой код. Что не так у меня тут? И как мне там определить приоритет?
если красный включен и при этом я включаю зеленый, то должен гореть красный.
Arturlem вне форума Ответить с цитированием
Старый 18.07.2019, 11:50   #19
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Начнем с протого:
Сколько выходных сигналов/цветов у вас? Заисит ли кол-во выходных от кол-ва входных сигналов?
p51x вне форума Ответить с цитированием
Старый 18.07.2019, 11:50   #20
Arturlem
Пользователь
 
Регистрация: 17.07.2019
Сообщений: 24
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Я уже не уверен. Вроде изначально шел разговор, что на каждый выходный по своему сигналу к ж з и в зависимости от них результирующий цвет.
В общем))
У нас есть 10 сигналов. У этих 10 сигналов есть состояния - к ж з.
1-4 - красные.
5-7 - желтые.
8-10 -зеленые.

Когда на симуляторе включаю первый сигнал, должен загореться красный цвет.
Если включаю 5 сигнал - желтый, но при этом первый сигнал должен быть в нуле.
Но если и первый и пятый сигнал в единице - то горит красный, так как он в приоритете
Arturlem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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