| 
	| 
	
	| 
		
	| 
			
			 
			
				06.04.2018, 16:29
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от rinat_n86 |  
	| порт опрашивается автоматически раз в 30 секунд, а положение 4 телесигнала приходит по изменению сразу автоматически без опроса |  
	
 Ну если у вас все само по себе и по заданному промежутку времени, то почему просто не проверить значение времени когда сработает (должен сработать) четвертый сигнал? |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 08:30
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 06.04.2018 
						Сообщений: 14
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Ну если у вас все само по себе и по заданному промежутку времени, то почему просто не проверить значение времени когда сработает (должен сработать) четвертый сигнал? |  
	
 Подскажите тогда что необходимо дописать в скрипте чтоб проводилась проверка четвертого ТС. В программирование не силен  |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 08:55
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Ну вы же сами сказали, что есть четыре команды, которые выполняются  последовательно по таймеру. А это в общем то запустить 4 раза таймер, и достаточно проверять итерацию цикла по которому они и запускаются - если четвертая (последняя), значит последняя команда. 
 Вообще-то телеметрия подразумевает обратную связь, а значит сигнал обратной связи может служить индикатором того, что выполняется/выполнено в данный момент времени.
 |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 10:46
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 06.04.2018 
						Сообщений: 14
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Ну вы же сами сказали, что есть четыре команды, которые выполняются  последовательно по таймеру. А это в общем то запустить 4 раза таймер, и достаточно проверять итерацию цикла по которому они и запускаются - если четвертая (последняя), значит последняя команда. 
 Вообще-то телеметрия подразумевает обратную связь, а значит сигнал обратной связи может служить индикатором того, что выполняется/выполнено в данный момент времени.
 |  
	
 Четыре Команды последовательно по таймеру не выполняются. В скрипте указано что если три телесигнала будут по коду 1, подается команда на телеуправления на 4 телесигнал. Так вот в скрипт работает, но есть одна бяка что команда телеуправления подается постояно, хотя 4 телесигнал изменил свое состояние и пока в ручную не остановить команду ТУ, оно не прикратиться. Подскажите мастера программисты своего дела какой командой в скрипте указать что ТУ должно выполняться всего два раза и если первое ТУ успешное и положение ТС изменилось, то последующие ТУ не выполнять.
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 12:13
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| Так я задавал вопрос, каким образом можно подавать следующие команды не опросив порт что он изменил состояние, или не получив обратный сигнал, на что получил ответ, что этого не требуется. А как же тогда можно узнать завершены ли предыдущие команды и можно подавать следующую? Или то что прописано в условии, это и есть сигналы ответа (состояние) на ранее переданные команды? |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 15:47
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 06.04.2018 
						Сообщений: 14
					 
		
 |  |  
	| Вообще в самом блоке телесигнализации прописано передавать ТС с временем 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); 
}
 
Совет разработчика: В основном цикле сделайте какую-нибудь переменную, после первой команды телеуправления увеличивайте значение этой переменной, по прошествии какого-то времени соответственно принимайте действия, если ТС не переключился.  
 
Подскажите и помогите  |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 16:10
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от rinat_n86 |  
	| Совет разработчика: В основном цикле сделайте какую-нибудь переменную, после первой команды телеуправления увеличивайте значение этой переменной |  
	
 Ну я же об этом тоже говорил, ответом было, что все не так, так как команды передаются не последовательно "Четыре Команды последовательно по таймеру не выполняются" . А ведь иначе, это просто цикл с обходом массива команд, запустили первую, запомнили итерацию, и т.д. То есть то, что вам и советуют.
 
	
 
	| Сообщение от rinat_n86 |  
	| Вопрос здесь if надо? |  
	
 Ну если if (TM('#TCX:Y:Z') == 1), это условие запуска команды 4, то да, я же не в курсе того, что это вообще означает. |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 16:29
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 06.04.2018 
						Сообщений: 14
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Ну я же об этом тоже говорил, ответом было, что все не так, так как команды передаются не последовательно "Четыре Команды последовательно по таймеру не выполняются". А ведь иначе, это просто цикл с обходом массива команд, запустили первую, запомнили итерацию, и т.д. То есть то, что вам и советуют. 
 
 
 Ну если if (TM('#TCX:Y:Z') == 1), это условие запуска команды 4, то да, я же не в курсе того, что это вообще означает.
 |  
	
 Если б знал какой командой в скрипте создать переменную   
Это не условие запуска команды, а состояние телесигнализации |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 16:39
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 14.01.2015 
						Сообщений: 12,989
					 
		
 |  |  
	| 
	
 
	| Сообщение от rinat_n86 |  
	| Если б знал какой командой в скрипте создать переменную |  
	
 Для этого команды не требуется, просто объявляется переменная, var cont = 1, например, которая увеличивается по мере выполнения команд, и после четвертой она будет равна 4.
 
	
 
	| Сообщение от rinat_n86 |  
	| Это не условие запуска команды, а состояние телесигнализации |  
	
 Если нужно выполнит нечто по условию этого состояния, то все верно, нужно проверять это состояние, то есть if(xxx==1) выполнить. |  |  
	| 
		
	| 
			
			 
			
				09.04.2018, 16:50
			
			
			
		 |  
	| 
		
			
			| Интересующийся       |  | 
					Регистрация: 06.04.2018 
						Сообщений: 14
					 
		
 |  |  
	| 
	
 
	| Сообщение от laimas   |  
	| Для этого команды не требуется, просто объявляется переменная, 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); 
} 
Мне так надо оставлять скрипт или я ошибку допускаю  |  |  |  |