Задержка кода setTimeout
Помогите сделать задержку на минуту проверки переменной polzunok1 если результат true, а если false то задержку не делать.
Думаю использовать timerId, но мне кажется есть проще способ. polzunok1++ ? vkl = true : vkl = false; $("#vkl").text(vkl); //если тру то нажимаем кнопку и отключаем другой if(vkl == true) $("#009").click(); setTimeout(function(){$("#010").click();}, 1000); |
Цитата:
vkl = polzunok1++ ? true : false; те не кажется условие polzunok1++ несколько странным, а? |
allexmak,
Опишите задачку целиком, к этому куску кода(если можно с эскизами-скриншотами) Возможно будет интересней помочь, нежели абстрактный кусок ни уму не сердцу |
Извините если коряво пишу:-? JS начал изучать месяц назад:)
Обьясню всю суть задумки: Мне нужно, чтоб при изменении сопротивления, на пер. резисторе включался планшет, механика работает только нужно помочь со скриптом Переменная polzunok1 подвязан к резистору получает его значения, для наладки скрипта подключил его к range button подключены к включению подсветки планшета. итог: при изменения переменной polzunok1, должна нажатся кнопка вкл потом выкл и не нажиматся больше пока горит подсветка на планшете (60000мс). пока писал перелопатил половина скрипта)))) <!DOCTYPE HTML> <html> <meta charset="utf-8" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> </head> <body> <div class="btn-group"> <button type="button" class="btn btn-default botaoEnvia" id="009" id="999">Вкл</button> <button type="button" class="btn btn-default botaoEnvia" id="010">Выкл</button> </div> <input type="range" min="0" max="100" step="1" value="50" id="polzunok1" oninput="znachenie1()"> <br> itog1: <span id="itog1" >?</span> <br> Pcheck1: <span id="Pcheck1" >?</span> <br> <script> var polzunok1; var Pcheck1 == polzunok1; function znachenie1() { polzunok1 = $("#polzunok1").val(); $("#itog1").text(polzunok1); }; //======================== function Pcheck(){ if (polzunok1 !== Pcheck1) { $("#009").click();//вкл setTimeout(function(){$("#010").click();}, 1000);// и выкл через сек Pcheck1 == polzunok1; }; $("#Pcheck1").text(Pcheck1); // function slip(){}; // setTimeout(slip, 60000); //нужна задержка 60сек после изменения polzunok1 } setInterval(Pcheck, 400); </script> </body> </html> и вот тут пока проблема: Pcheck1 == polzunok1 непойму в чем. |
allexmak,
1. Откуда берётся переменная Pcheck1 ? Из какого элемента брать это значение ? 2. Начальное положение - Выключено ? 3. Инициация включения - Передвижение Ползунка ? Или наборот, если Включаем, то двигаем ползунок к значению Pcheck1 ? ============= Пока отложил Вопрос про задержку и подсветку ... |
1 Pcheck1 не берется внешни, она просто:
-принимает значение polzunok1 -сравнивает значение после изменения polzunok1 -после принимает его значение. 2 да начальное выключено. 3 да |
Цитата:
Нафег сравнивать ? Cмысл Переменной ? |
Цитата:
============================== Задержка на последующее включение не зависит от величины передвижки ползунка от текущего значения ? Хоть на 1 подвинули от текущего, хоть на 50 ? - Всё одно 1минута ? |
конечно было бы замечательно на счет диапазона передвига ползунка
2-3 единицы хотелось бы видеть в запасе и не включать, но об этом пока не думал главный момент для меня это не включать повторно если уже горит. на счет схемы это немного сложновато потому что проект из многих датчиков и скриптов могу нарисовать процесс обработки информации и связей https://drive.google.com/open?id=0B8...nRhRHZJaTk3cDA |
Цитата:
я же намерен в дальнейшем убрать ползунок |
allexmak,
Мне нужна схема взаимодействия, а не набросок комплектующих.. ================= Давай так: 1. Что делает резистор и чем он должен управлять, что должно шевелиться в системе при его подвижке ? 2. НАфига выключатель и что он включает - выключает ? 3. Для чего планшет и что он делает? Cейчас данным куском программы, кроме подсветки планшета, что либо задействано ? 4. Нафига планшету посдсветка, какую роль она играет для его работы ? Почему именно минута свечения ? |
1 при подвижке тупо div с числами 0-100 и с этого id ,берем переменную
2 реле, как на схеме 3 планшет носитель HTML, нет 4 планшет отображает информацию с датчиков и все, загорается при верчениябарашка на настройке, минута, ну к примеру стоит через минуту потухание подсветки 5 но на мой взгляд это всё лишняя информация)) |
allexmak,
Если ползунок в процессе движения (к примеру медленно движется) 1. Когда запускать вкл ? (Вариант - остановился и более секунды значение не меняется или Ваш Вариант действий ... ? 2. Стоит Блокировать возможность подвижки псевдоползунка(элемент <input type="range"...> ) на 60 сек при зажигании подсветки ? ================================= Зажигание подсветки соответствует короткому вкл ? (c затем выкл) ? Через сколько времени перекидывается на выкл. ? (после вкл.) |
1 сразу включать как 1е изменение
2 блокировка ненужна Цитата:
$("#009").click();//вкл setTimeout(function(){$("#010").click();}, 1000);// и выкл через сек |
allexmak,
Ну включилось, а если мы двигаем дальше ? Что - так и будет включаться и выключаться ? Даже если гнать ползунок быстро: займет - 2-3 секунды (реальный реостат - еще медленней) Ну и чо - будет мигать несколько раз ? (минимум 2-3 раза) Или как ? ==================== Для чего нужен реостат в реале ? Тогда я хоть логику пойму, ну пока идея автоматики либо мне непонятна, либо полный отстой... |
1е изменение- включилось и больше ничего минута
как я уже писал реостат начинаешь дигать экран загорается и не нажимается кнопка пока экран сам не потухнет (в настройке планшета подсветка минута), как потух так опять проверяем крутится ли реостат, если да то опять включаем только один раз и не включаем минуту. |
См. Спойлер:
<!DOCTYPE HTML> <html> <meta charset="utf-8" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> </head> <body> <style type="text/css"> #Lamp{ border: rgba(56,185,53,.7) solid 2px; height: 123px; background: transparent url(http://s2.uploads.ru/t/BJc5O.jpg) center no-repeat; } #Lamp.set{ border-color: rgba(255,0,0,.4) !important; background-image: url(http://s7.uploads.ru/t/yxOtG.jpg) !important; } .btn-group { position: relative; } /*Загородил кнопки от клика*/ .btn-group img { position: absolute; z-index: 1000; width: 100%; height: 100%; } </style> <br> <br> <table width=600> <tr><td id="Lamp" colspan="2"><!--Типо Лампа--></td></tr> <tr><td> <br> <br> <input style="width:300px;" type="range" min="0" max="100" step="1" value="50" id="polzunok1" oninput="inputRezistor(this)"> <br> <br> Текущее значение R1 = <span id="itog1" >0</span>;</td><td>Значение Включения = <span id="Pcheck1" >??</span> ±<span id="trigDelta">1</span></td></tr> </table> <br> <br> <div class="btn-group"> <img src="http://forum.mybb.ru/i/blank.gif" alt="Загораживалка кнопок от клика"> Вкл<input type="radio" name="on-off" class="btn btn-default botaoEnvia" id="009"/> Выкл<input type="radio" name="on-off" class="btn btn-default botaoEnvia" id="010" checked/> </div> <script> window.onload = function(){ var T_подсветки = 10*1000; //Пока 10 сек//Время задержки на время подсветки планшета var T_зaдержВкл = 1000; //Задержка отключения Вкл. var Lamp = false; //Подсветка включена/выключена; var trigDelta = 3; //Дельта сработки от начального значения ползунка при выключенной подсветке [>0]; var R1 = $('#polzunok1'); //Элемент ползунок; var itog = $("#itog1"); //Отображающий элемент текущего значения ползунка; var pcheck1 = false; //Значение ползунка для подключения подсветки var elPcheck1 = $('#Pcheck1'); //Отображающий элемент Значение ползунка для подключения подсветки; var elTrigDelta = $("#trigDelta"); //Отображающий элемент Дельта сработки; elTrigDelta.text(trigDelta); setTimeout(function(){ //Дожидаемся autocomplete для id="polzunok1"; function tstLampOnOff (x) { if(Lamp||pcheck1===false)return false; if(Math.abs(+x-pcheck1)<trigDelta)return false; //Зажигаем! Lamp = true; pcheck1 = false; $('#009').click(); $('#Lamp').addClass('set'); setTimeout(function(){ $('#010').click(); },T_зaдержВкл); setTimeout(function(){ Lamp = false; busy = false; $('#Lamp').removeClass('set'); inputRezistor(R1[0]) },T_подсветки); } var busy = false; function setStartLampZn (x) { //Установка начального отсчёта включения [pcheck1] if(busy||Lamp) return false; busy = true; elPcheck1.text(x); pcheck1 = +x; } function setItog (x) { itog.text(x); setStartLampZn (x) } inputRezistor = function(el) { var x = el.value; setItog (x); tstLampOnOff(x); } inputRezistor(R1[0]); },1200); }; </script> </body> </html> |
Deff,
Класс это действительно то что нужно, спасибо огромное. |
Deff,если не сложно, где поменять отсчет T_подсветки чтоб шло после последнего изменения pcheck1, а не первого.
|
allexmak,
Не понял... тут как: - подсветка планшета выключилась - pcheck1 зафиксировал текущий отсчет в inputRezistor Далее tstLampOnOff (x) тестирует превышение разницы текущего pcheck1 над последущим изменением в inputRezistor на величину trigDelta ============================== Вы ставите задачу непонятно - что есть "последнее изменения pcheck1" ? Когда его считывать ? ============================== Нарисуйте 3 графика друг под другом 1. - кривая изменение резистора от времени 2. Включение - выключения реле... 3. Время запуска подсветки ============================== Cейчас эти графики примерно такие: http://s3.uploads.ru/t/tTHFM.jpg Cиним - резистор Красным - выключатель реле Зелёным - подсветка |
обьясню по другому)
крутишь R время пошло, а на планшете наоборот,подсветка же выключается когда время выйдет после последнего касания на экран. |
allexmak,
Нарисуйте Графики - см предыдущее сообщение Ну я занимаюсь автоматикой более 16 лет, мне сложно понимать не профессионала ================= Подсветка Выключается что ли, при Срабатывании Вкл ? Рисуйте графики от времени - (Для Включенного - Высокий уровень - выключено - низкий) Резистор - меняющийся по уровню |
Вложений: 1
Deff,
я думаю так |
Цитата:
|
allexmak,
Последнее изменение за какой промежуток времени ? Последнее изменение - это 100 Что будет если я иду вниз, от ста единиц - когда срабатывать 0 при нуле ? Я могу в час двигать на одно деление... ====================== А если я буду увеличивать резистор плавно, 1 единичку в секунду ? Кады срабатывать ? как дойдём до 100 ? И вы так и не уточнили, нафига нужен резистор ??? Почему не выключатель ? Что символизирует этот резистор ? ====================== |
резистор это регулировка клапонов при его вращении выставляется температура и когда я выстовлюю её мне нужно чтоб загорался экран чтоб можно было посмотреть на какую температуру я выстовил, с выключателем это лишние телодвижения и не практично.
|
Цитата:
|
Вложений: 1
график
|
Вложений: 1
либо лучше так
|
allexmak,
У меня синее - график изменения ползунка сопротивления Почему Вы его изображаете ступенькой ??? Ну плавное изменение у ползунка... Пусть Ваш руководитель пояснит критерий срабатывания включения подстветки, в зависимости от ползунка. Ибо Вы очень трудно доносите желаемый алгоритм В скриптах и в Автоматике - главное Алгоритм, - который суть задачи реализовать. Ну не понимаю я, почему форма кривой изменения сопротивления должна быть именно такая, и что она будет такая ===================== Сейчас Алгоритм практически такой же как и на Вашем последней картинке! (Только кривая ползунка никак не связана с бросками, а плавно-произвольная, после включения подсветки (Зеленая линия в Высоком уровне и её фронт совпадает с красной) |
Снимите эти три графика от времени текущего Автомата:
Изменяйте медленно ползунок по единичке (сначало вправо) при запуске и позже, после сработки ВКЛ и после выключения лампы 1. Начальное значение устанавливается первое значение при начале работы или выключения подсветки 2. Выключатель реле и подсветка срабатывает при превышении уровня(в плюс или минус) триггера порога срабатывания trigDelta(сейчас он равен 3 единицы) от начального значения при начале работы или Выключения подсветки. Продолжите график как дойдёте до максимума, в минимум.... ================================================== == И неотвеченный вопрос: Что символизирует ползунок(или реостат в реальной установке, почему не просто выключатель ? Ведь В итоге мы делаем из ползунка выключатель по какому-то алгоритму, смысл таких извратов, если это не аналог чего-то ?) ибо мне тогда может быть будет понятно по аналогии, и возможность иных методов регулировки |
синяя скочками потому что я имею ввиду показания резистора к примеру 30 потом крутанули на 50 потом 20 потом 80
|
Вложений: 1
возможно так понятнее
|
Вложений: 1
на верхний не смотри ошибся(
|
allexmak,
я не понимаю критерия срабатывания в точке где ты добавляешь очередную минуту! 1. Что реально будет вместо ползунка ? Какой то сигнал ? Что за сигнал, откуда, какую информацию он несёт! Пусть задачу поставит руководитель проекта ибо я не понимаю критериев срабатывания! У меня срабатывает при превышении порогового уровня(выставляемого в trigDelta) от установочного значения после гашения подсветки, либо при самом начале работы Сформулируйте условия срабатывания(продления) работы подсветки (от какого уровня, с какими пороговыми параметрами(или иными критериями) подсветка передозапускается) Я не этого не понимаю! От чего отталкиваться и с чем сравнивать! Попросите руководителя работы сформулировать этот алгоритм. И всё так же не отвечен Вопрос! Цитата:
Цитата:
a 20 21 22 15 ? Где формула или алгоритм срабатывания ? Текущий алгорит включения => Math.abs(+x-pcheck1)>=trigDelta |
Deff,
Спасибо за помощь, к сожаленью руководитель я сам, потому что это домашний проект, видимо действительно немогу обьяснить чего хочу или еще сам не понимаю..., буду разбиратся еще раз спасибо за мучения)) |
allexmak,
Ну опять жа, почему резистор(или ползунок) - а не выключатель, Что будет апосля вместо оного ? Я думаю подсказка может таиться в этом |
Цитата:
если температура не меняется(тоесть не крутится реостат) подсветка тухнет так как в планшете стоит подсветка на минуту и отдыхаем |
allexmak,
Оки, Вопрос: насколько мелкие изменения температуры (движения реостата) влияют ? 1. К Примеру 1-2 единицы +/- будут приводить к досрабатыванию(сразу по окончании или в течении первой сработки) ? 2. Если термостат достаточно сильно крутиться на первом срабатывании, до минутной Выдержки(а потом к примеру тормозит чуть перед окончанием минуты до 1-2 единицы +/- - повторное срабатывать должно ? Или нужен большей размах амплитуды колебаний туды- сюды ? 3. Почему не поставить фотоэлемент на подсветку с планшета и брать окончание подсветки с него (поставить его на реле, и релём подавать сигнал на комп( к примеру тональный сигнал через аудиовход, есть и иные варианты ) |
1- я думаю 1-2 небудут приводить к досбрасыванию
2- этот момент думаю можно добавить: "перед окончанием минуты до 1-2 единицы+/- - повторное срабатывать должно ?" |
Часовой пояс GMT +3, время: 15:26. |