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

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);
}
Мне так надо оставлять скрипт или я ошибку допускаю:(


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