Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите пожалуйста!!! (https://javascript.ru/forum/misc/67629-pomogite-pozhalujjsta.html)

igrovik 28.02.2017 02:27

Помогите пожалуйста!!!
 
Приветствую уважаемые мастера. Помогите пожалуйста с решением. В js вообще полный 0.
Суть проблемы такова: стал вопрос сделать запоминание вводимых пользователем данных, и их выводе при следующем входе пользователя на определенную страницу.
Порядок такой:
должно быть 2 окошка в первое человек к примеру вводи 10 а во второе 35 и эти данные должны запомниться до следующего входа пользователя.

P/S также требуется что бы была кнопочка очистить. То есть чтобы человек мог очистить предыдущие значения и ввести новые. Помогите пожалуйста. Заранее большое спасибо.

Paguo-86PK 28.02.2017 06:03

Дёшевo и сердито:
<html><head>
<script>
function Loader() {
document.getElementById("User").value = sessionStorage.getItem("User");
}
</script>
</head>
<body onload='Loader()'>
<input id=User type=text placeholder='Введите данные и обновите страницу' value='' onkeyup='sessionStorage.setItem("User", this.value)'/>
</body>
Продвину ый вариант:
<html><head>
<script>
function Loader() {
	var	inputs = document.getElementsByTagName("input");	// Запрашиваем коллекцию input-полей
	var	count = inputs.length;	// Узнаём общее число полей в коллекции
	while(count --) {	// Пробегаем по каждому полю в обратном порядке
		var	id = inputs[count].id;	// Выпытываем у очередного поля его государственный идентификатор
		inputs[count].value = sessionStorage.getItem(id);	// Заносим в поле данные соответствующие идентификатору
	}
}
</script>
</head>
<body onload='Loader()'>
<input id=User type=text placeholder='Введите данные и обновите страницу' value='' onkeyup='sessionStorage.setItem(this.id, this.value)'/><br />
<input id=Looser type=text placeholder='Введите данные и обновите страницу' value='' onkeyup='sessionStorage.setItem(this.id, this.value)'/><br />
<input id=Buzzer type=text placeholder='Введите данные и обновите страницу' value='' onkeyup='sessionStorage.setItem(this.id, this.value)'/><br />
</body>
P.S.: Вся необходимая инфа на тему

igrovik 28.02.2017 13:28

Спасибо большое!

rinat_n86 06.04.2018 15:34

Помогите плиз
 
Мне поставлена задача написать скрипт в устройстве телемеханики, а именно есть определенные дискретные сигналы которые ретранслируют информацию на сервер телемеханики и имеют возможность телеуправления. При сработки телесигнализации от одного до трех одновременно (т.е. 0 меняется на 1), необходимо чтобы четвертый ТС подал команду на телеуправление дискретного сигнала. В связи с этим начал писать скрипт:
while (true) {
if (TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0) {
tmControl(X, Y, Z, 1); 1 - включить ТУ 4 телесигнала
}
sleep(2000);
}

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

Nexus 06.04.2018 15:40

rinat_n86, если ваш код на JavaScript написан (в чем я сомневаюсь), то так:
var flag = 0;
while (!flag) {
    if (TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0) {
        tmControl(X, Y, Z, flag = 1); //1 - включить ТУ 4 телесигнала
    }
    sleep(2000);
}

rinat_n86 06.04.2018 15:55

Цитата:

Сообщение от Nexus (Сообщение 482593)
rinat_n86, если ваш код на JavaScript написан (в чем я сомневаюсь), то так:
var flag = 0;
while (!flag) {
    if (TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0) {
        tmControl(X, Y, Z, flag = 1); //1 - включить ТУ 4 телесигнала
    }
    sleep(2000);
}

Nexus попробовал скрипт как написан у Вас и также при запуске у меня телеуправления 4 телесигнала постоянно подает команду и не останавливается, пока принудительно стоп не нажмешь. Как возможно в скрипте указать что команду телеуправления 4 телесигнала подается все два раза и если после первого раза команда телеуправления 4 телесигнала прошла успешно, т.е. ТС изменил код с 0 на 1, то последующие команды телеуправления не подавать

Nexus 06.04.2018 16:00

rinat_n86, You speak Russian?
Which language you code written?

laimas 06.04.2018 16:15

Цитата:

Сообщение от rinat_n86
Необходимо чтобы скрипт подал команду телеуправления 4 телесигнала и если 4 телесигнал включился перестать подавать команду телеуправления 4 телесигнала. Я в программирование не разбираюсь, а задачу решить надо.

А каким образом вы не опросив порт можете узнать включилось или нет?

rinat_n86 06.04.2018 16:20

Цитата:

Сообщение от Nexus (Сообщение 482596)
rinat_n86, You speak Russian?
Which language you code written?

Программа указывает скрипт с расширением /.js (javascript)

rinat_n86 06.04.2018 16:22

Цитата:

Сообщение от laimas (Сообщение 482597)
А каким образом вы не опросив порт можете узнать включилось или нет?

порт опрашивается автоматически раз в 30 секунд, а положение 4 телесигнала приходит по изменению сразу автоматически без опроса

laimas 06.04.2018 16:29

Цитата:

Сообщение от rinat_n86
порт опрашивается автоматически раз в 30 секунд, а положение 4 телесигнала приходит по изменению сразу автоматически без опроса

Ну если у вас все само по себе и по заданному промежутку времени, то почему просто не проверить значение времени когда сработает (должен сработать) четвертый сигнал?

rinat_n86 09.04.2018 08:30

Цитата:

Сообщение от laimas (Сообщение 482604)
Ну если у вас все само по себе и по заданному промежутку времени, то почему просто не проверить значение времени когда сработает (должен сработать) четвертый сигнал?

Подскажите тогда что необходимо дописать в скрипте чтоб проводилась проверка четвертого ТС. В программирование не силен:-?

laimas 09.04.2018 08:55

Ну вы же сами сказали, что есть четыре команды, которые выполняются последовательно по таймеру. А это в общем то запустить 4 раза таймер, и достаточно проверять итерацию цикла по которому они и запускаются - если четвертая (последняя), значит последняя команда.

Вообще-то телеметрия подразумевает обратную связь, а значит сигнал обратной связи может служить индикатором того, что выполняется/выполнено в данный момент времени.

rinat_n86 09.04.2018 10:46

Цитата:

Сообщение от laimas (Сообщение 482750)
Ну вы же сами сказали, что есть четыре команды, которые выполняются последовательно по таймеру. А это в общем то запустить 4 раза таймер, и достаточно проверять итерацию цикла по которому они и запускаются - если четвертая (последняя), значит последняя команда.

Вообще-то телеметрия подразумевает обратную связь, а значит сигнал обратной связи может служить индикатором того, что выполняется/выполнено в данный момент времени.

Четыре Команды последовательно по таймеру не выполняются. В скрипте указано что если три телесигнала будут по коду 1, подается команда на телеуправления на 4 телесигнал. Так вот в скрипт работает, но есть одна бяка что команда телеуправления подается постояно, хотя 4 телесигнал изменил свое состояние и пока в ручную не остановить команду ТУ, оно не прикратиться. Подскажите мастера программисты своего дела какой командой в скрипте указать что ТУ должно выполняться всего два раза и если первое ТУ успешное и положение ТС изменилось, то последующие ТУ не выполнять.

laimas 09.04.2018 12:13

Так я задавал вопрос, каким образом можно подавать следующие команды не опросив порт что он изменил состояние, или не получив обратный сигнал, на что получил ответ, что этого не требуется. А как же тогда можно узнать завершены ли предыдущие команды и можно подавать следующую? Или то что прописано в условии, это и есть сигналы ответа (состояние) на ранее переданные команды?

rinat_n86 09.04.2018 15:47

Вообще в самом блоке телесигнализации прописано передавать ТС с временем 30 сек. По трассировке смотрю состояние 4 ТС передает, но мне кажется скрипт не понимает состояние ТС4, так как в скрипте не указан его состояние.

if (TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0) {
здесь указано состояние тс с 1 по 3
далее команду ТУ
tmControl(X, Y, Z, 1); 1 - включить ТУ 4 телесигнала
и вот здесь надо как то указать состояние 4-го ТС (как if (TM('#TCX:Y:Z') == 1). Вопрос здесь if надо?
далее команду ТУ не выполняется
}
sleep(2000);
}

Совет разработчика: В основном цикле сделайте какую-нибудь переменную, после первой команды телеуправления увеличивайте значение этой переменной, по прошествии какого-то времени соответственно принимайте действия, если ТС не переключился.

Подскажите и помогите:help:

laimas 09.04.2018 16:10

Цитата:

Сообщение от rinat_n86
Совет разработчика: В основном цикле сделайте какую-нибудь переменную, после первой команды телеуправления увеличивайте значение этой переменной

Ну я же об этом тоже говорил, ответом было, что все не так, так как команды передаются не последовательно "Четыре Команды последовательно по таймеру не выполняются". А ведь иначе, это просто цикл с обходом массива команд, запустили первую, запомнили итерацию, и т.д. То есть то, что вам и советуют.

Цитата:

Сообщение от rinat_n86
Вопрос здесь if надо?

Ну если if (TM('#TCX:Y:Z') == 1), это условие запуска команды 4, то да, я же не в курсе того, что это вообще означает.

rinat_n86 09.04.2018 16:29

Цитата:

Сообщение от laimas (Сообщение 482812)
Ну я же об этом тоже говорил, ответом было, что все не так, так как команды передаются не последовательно "Четыре Команды последовательно по таймеру не выполняются". А ведь иначе, это просто цикл с обходом массива команд, запустили первую, запомнили итерацию, и т.д. То есть то, что вам и советуют.



Ну если if (TM('#TCX:Y:Z') == 1), это условие запуска команды 4, то да, я же не в курсе того, что это вообще означает.

Если б знал какой командой в скрипте создать переменную:-?
Это не условие запуска команды, а состояние телесигнализации

laimas 09.04.2018 16:39

Цитата:

Сообщение от rinat_n86
Если б знал какой командой в скрипте создать переменную

Для этого команды не требуется, просто объявляется переменная, var cont = 1, например, которая увеличивается по мере выполнения команд, и после четвертой она будет равна 4.

Цитата:

Сообщение от rinat_n86
Это не условие запуска команды, а состояние телесигнализации

Если нужно выполнит нечто по условию этого состояния, то все верно, нужно проверять это состояние, то есть if(xxx==1) выполнить.

rinat_n86 09.04.2018 16:50

Цитата:

Сообщение от laimas (Сообщение 482815)
Для этого команды не требуется, просто объявляется переменная, var cont = 1, например, которая увеличивается по мере выполнения команд, и после четвертой она будет равна 4.



Если нужно выполнит нечто по условию этого состояния, то все верно, нужно проверять это состояние, то есть if(xxx==1) выполнить.

while (true) {
if (TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0) {
tmControl(X, Y, Z, 1); 1 - включить ТУ 4 телесигнала
}
if (TM('#TCX:Y:Z') == 1
var cont==1
sleep(2000);
}
Мне так надо оставлять скрипт или я ошибку допускаю:(

Nexus 09.04.2018 16:53

laimas, в какой среде исполнения в js появляется блокирующая поток функция sleep?

laimas 09.04.2018 17:04

Я не понимаю причем тут цикл и проверкой if(xxx==0 && xx==0 ...), а как все это работает вы не поясняете, либо я не понял ничего из пояснения.

while (true) {}, это похоже на описание основного блока кода, main, как например в программе на Си для микроконтроллера.

Допустим, что в этом основном блоке нужно выполнить последовательно, четыре команды, каждая выполняется после запуска предыдущей и возврате состояния 0. То есть это будет цикл который выполнит четыре раза определенные в нем действия.

var n = 4;

while(n--) {
    alert(1)
}


Если определять итерацией команду, которую нужно выполнить, то n = 1, while(n<=4) {n++; после запуска каждой команды}. Ну соответственно проверяя состояние после выполнения каждой, а не всех, ведь если любая из них не вернет 0, надо полагать это ошибка и выход.

laimas 09.04.2018 17:14

Цитата:

Сообщение от Nexus
в какой среде исполнения в js появляется блокирующая поток функция sleep?

Походу, это не JS, хотя и на JS можно программировать контролеры, но я таким мазохизмом не занимаюсь. А sleep, это задержка, и она ничего не блокирует.

Nexus 09.04.2018 17:26

laimas,
Цитата:

Сообщение от laimas
А sleep, это задержка, и она ничего не блокирует.

если она в бесконечном цикле ничего не блокирует, то нафиг она там вообще нужна? )

laimas 09.04.2018 17:28

Цитата:

Сообщение от Nexus
если она в бесконечном цикле ничего не блокирует, то нафиг она там вообще нужна?

Это надо мыслить категориями Cи, а не JS.

j0hnik 09.04.2018 17:29

laimas,
С | C++ знаете?

laimas 09.04.2018 17:39

j0hnik,
и что?

j0hnik 09.04.2018 17:48

laimas,
это был вопрос.

laimas 09.04.2018 20:12

Что я знаю, чего нет, к теме отношения не имеет, а что тут за язык я не знаю. Си язык типизированный, чего не наблюдается в данном случае.

rinat_n86 10.04.2018 07:56

Доброе утро профессора. Функция sleep используется для остановки, но почему мне кажется она не работает. На яндекс диск выложил выписки из инструкции в формате zip.
https://yadi.sk/d/HrqPe-483UGRm9

rinat_n86 10.04.2018 08:44

Цитата:

Я не понимаю причем тут цикл и проверкой if(xxx==0 && xx==0 ...)
Это не цикл проверки, а состояние телесигнала

rinat_n86 10.04.2018 09:45

Профессора своего дела помогите написать скрипт: Задача стоит в следующем
Есть три положения телесигнализации (откл/вкл) и при срабатывание всех трех ТС в положении откл должна подаваться команда телеуправления на четвертый ТС для его включения. При этом если команда телеуправления 4 ТС прошла успешно и включилась, последующие команды телеуправления 4 ТС не подавать. При изменении положения ТС, блок ТС автоматически передает его состояние, но в скрипте как то надо указать его контроль состояния.
Я уже весь запутался в написании скрипта и голову сломал. Если бы понимал в программировании, то мог бы сам написать скрипт

laimas 10.04.2018 12:19

А чему равно состояние 4ТС до момента срабатывания?

Если знать надо ли, то это просто проверить

if(!TC1 && !TC2 && !TC3 && TC4) run TC4

PS. Кстати, а почему обычный счетчик, о чем ранее говорилось, не может служить признаком?

Dilettante_Pro 10.04.2018 12:38

laimas,
А не так?

if(!TC1 && !TC2 && !TC3 && !TC4) run TC4

т.е включить когда ВСЕ выключены.
Цитата:

Сообщение от rinat_n86
при срабатывание всех трех ТС в положении откл должна подаваться команда телеуправления на четвертый ТС для его включения. При этом если команда телеуправления 4 ТС прошла успешно и включилась, последующие команды телеуправления 4 ТС не подавать.


laimas 10.04.2018 12:57

Цитата:

Сообщение от Dilettante_Pro
А не так?

Понятия не имею, я так до сих пор и не выяснил, что есть подать команду и знать что она выполнена. По идее цикл в котором выполнять tmControl(X, Y, Z, 1);, если эта функция запускает команду и возвращает ее состояние. Сколько об это не говорили, получается мимо.

Судя по ранее сказанному, выполнено, это 0, а значит не выполнено еще, это либо 1, либо ... не знаю что. А значит запускать 4 или нет, это false && false && false && true.

Или если знать выполнены ли все и поступать от этого, то можно и так. Вроде бы очевидно, а вот почему проблемы при этом, я так и не смог понять.

Dilettante_Pro 10.04.2018 13:14

laimas,
Конечно, это гадание на кофейной гуще, но у меня сложилось впечатление, что анализируются не результаты выполнения команд, а состояния каналов -включен/выключен

rinat_n86 10.04.2018 13:29

Цитата:

Сообщение от Dilettante_Pro (Сообщение 482890)
laimas,
но у меня сложилось впечатление, что анализируются не результаты выполнения команд, а состояния каналов -включен/выключен

Да после прохождения успешной/не успешной команды телеуправления 4 телесигнала должно контролироваться его состояние для прекращения подачи телеуправления или повтор команды телеуправления на 4 телесигнал, если первая команду ТУ не успешная.

(TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0 && TM('#TCX:Y:Z') == 0)

ТМ-телемеханика, ТС-телесигнал, Х-номер канала, Y-номер КП, Z- номер ТС, ==0/1 - состояние ТС (откл/вкл)

tmControl(X, Y, Z, 1)

1 - включить команда телеуправления

laimas 10.04.2018 13:36

rinat_n86,
а если начитать с начала, когда еще не было команд. Подается первая команда, она выполняется функцией tmControl(X, Y, Z, 1) и от нее получает состояние? Если да и запуск первой команды вернул не 0, тогда что?

rinat_n86 10.04.2018 13:48

после выполнения команды телеуправления состояние телесигнализации не приходит. Вот здесь мне надо как то указать виде наверно переменной чтоб проводил опрос состояния ТС после команды ТУ. Если состояние ТС изменилосьс 0 на 1 то надо чтобы команда ТУ прекратилось

laimas 10.04.2018 13:50

Цитата:

Сообщение от Dilettante_Pro
у меня сложилось впечатление, что анализируются не результаты выполнения команд, а состояния каналов -включен/выключен

А это разве не есть результат запуска команды? Если к примеру, есть четыре порта, состояние которых надо изменить из начального 1, а состояние 0, то надо ли проверять, что порт изменил состояние?

Если проблема только проверить, то ее быть не должно, if(....) и все. В чем тогда суть проблемы?


Часовой пояс GMT +3, время: 02:14.