Задержка кода 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, время: 16:11. |