Автор | Сообщение |
|
Отправлено: 20.02.16 13:17. Заголовок: время в simpl+
Подскажите, нужно следующее - есть какой-то сигнал "1", если этот сигнал дольше, например, чем 5 секунд, то нужно сформировать другой сигнал. нет - оставить его нулем есть ли такой элемент в симпле? или нужен симпл+? если симпл+, подскажите какая нужна команда? Спасибо
|
|
|
Ответов - 17
[только новые]
|
|
|
Отправлено: 20.02.16 13:39. Заголовок: Debounce Символ Debo..
Debounce Символ Debounce управляет данным выходным сигналом к уровню его соответствующего ввода, если <время> истекает без последующего изменения в состоянии ввода.
|
|
|
|
Отправлено: 20.02.16 14:17. Заголовок: СергейК большое спа..
СергейК большое спасибо!! а возможно знаете - как можно единичным сигналом с выхода этого элемента перезагрузить программу? или сам крестрон если это вообще возможно не физически
|
|
|
|
Отправлено: 20.02.16 14:22. Заголовок: Для S+: DIGITAL_INPU..
Для S+: DIGITAL_INPUT input_signal; Integer Crestron_Connected; TCP_CLIENT Crestron[5000]; Integer_Function connect() { return(SocketConnectClient (Crestron, "127.0.0.1", 41795, 0)); } Function reboot_func(string data) { signed_integer iStatus,i; if (Crestron_Connected=0){connect();} i=0; while(i<90) { if (Crestron_Connected=1) { iStatus = SocketSend(Crestron,data); if (iStatus < 0)Print("Error Sending to Crestron: %d\n", iStatus); if (iStatus=-5){connect();delay(200);}else {i=100;} }else {delay(20);i=i+1;} } } CHANGE input_signal { CancelAllWait(); wait(500) { if (input_signal=1){reboot_func("reboot\x0D\x0A");} } } SOCKETCONNECT Crestron { Crestron_Connected = 1;} SOCKETDISCONNECT Crestron { Crestron_Connected = 0;} Команду reboot\x0D\x0A можете и через Serial I/O посылать и TCP client, если конечно будете на "квадратиках" делать
|
|
|
|
Отправлено: 20.02.16 14:25. Заголовок: kislez2015 пишет: е..
kislez2015 пишет: цитата: | единичным сигналом с выхода этого элемента перезагрузить программу? или сам крестрон |
| Программу - Soft Reset Crestron - Hard Reset
|
|
|
|
Отправлено: 20.02.16 14:45. Заголовок: Вячеслав СергейК сп..
Вячеслав СергейК спасибо!
|
|
|
|
Отправлено: 20.02.16 14:48. Заголовок: Вячеслав а что дела..
Вячеслав а что делает эта часть? SOCKETCONNECT Crestron { Crestron_Connected = 1;} SOCKETDISCONNECT Crestron { Crestron_Connected = 0;}
|
|
|
|
Отправлено: 20.02.16 14:55. Заголовок: Есть еще готовые куб..
Есть еще готовые кубики HARD RESET и SOFT RESET
|
|
|
|
Отправлено: 20.02.16 14:58. Заголовок: kislez2015 пишет: В..
kislez2015 пишет: цитата: | Вячеслав а что делает эта часть? SOCKETCONNECT Crestron { Crestron_Connected = 1;} SOCKETDISCONNECT Crestron { Crestron_Connected = 0;} |
| Они устанавливают значение статуса подключения. Чтоб выполнять подключение к процессору по необходимости. Эта глобальная переменная используется в теле функции reboot_func
|
|
|
|
Отправлено: 24.02.16 13:33. Заголовок: Вячеслав но я тут п..
Вячеслав но я тут проверил - для того, чтобы на выходе модуля по зажатию появлялась единица в симпле достаточно сделать это PUSH press { wait(500) { if (press=1){time_reset=1;} } } CancelAllWait(); здесь можно вообще не использовать, вроде
|
|
|
|
Отправлено: 24.02.16 13:50. Заголовок: Вячеслав или я в чем..
Вячеслав или я в чем-то неправ? почему-то после перезагрузки программы входной сигнал этого симпл+ остается единичным - и в том, и в том варианте
|
|
|
|
Отправлено: 24.02.16 17:10. Заголовок: 1.PUSH не подходит, ..
1.PUSH не подходит, потому что он неверно оценит ситуацию, когда пользователь нажал кнопку, подождал пару секунд и отпустил, потом прямо перед окончанием 5 с интервала опять нажал. Т.е. на момент истечения 5с входной сигнал будет =1. НО!!!! он не был равен 1 на всем протяжении 5с интервла.(что требовалось по условию задачи) Кроме того без CancelAllWait(), вы порождаете клоны wait процесса каждый из которых закончится через 5с после начала и будет на тот момент совсем не актуальным для программы и внесет полный хаос. 2.В моем примере нет выходного сигнала, а используется вызов функции reboot_func которая перезагружает процессор. Но даже в вашем случае после перезагрузки выходной сигнал time_reset будет нулевым. Покажите весь блок вашего кода - посмотрим. Можете использовать вместо time_reset=1; конструкцию push(1, time_reset); Или в блоке инициализации в конце+ модуля написать ( предварительно разкомментировав блок Main убрав /* и */): Function Main() { // TODO: Add code here // Initialize declared global and local variables/arrays as needed. time_reset=0; // WaitForInitializationComplete(); // If you are reading any Input or Output variables, uncomment // the WaitForInitializationComplete statement above and read // them afterwards. Input/Output variables will not have // their correct values set until after the logic processor // runs and propagates the values to them. } Да и еще, совсем забыл есть просто замечательно подходящая вам функция press and hold v1.2 (см. раздел Crestron modules) Установите параметр hold time 5s и снимайте ваш сигнал с выхода held заведя его на кубик soft reset из раздела logic symbols
|
|
|
|
|
Отправлено: 24.02.16 17:18. Заголовок: Вячеслав меня смуща..
Вячеслав меня смущает даже не выход, у меня почему-то после перезагрузки вход этого модуля press остается =1, тот сигнал что я зажимаю на 5 секунд А поясните про клонов wait процесса без CancelAllWait(). у меня же по идее один wait процесс... Откуда клоны? Спасибо
|
|
|
|
Отправлено: 24.02.16 17:26. Заголовок: 1. Покажите весь код..
1. Покажите весь код модуля. Я не пойму что там за press такой. 2.Тело Wait сработает только по истечении 5с Оно не устанавливает сигнал сразу. Т.е. все нажатия в течении 5с запускают параллельные отложенные Wait каждый из которых закончится в свое время. Для этого я и использовал CancelAllWait() чтоб сбросить предыдущие неактуальные Wait и запустить таймер нового единственного Wait который через 5с проверит держите ли вы все еще кнопку нажатой. 3.см. press and hold выше
|
|
|
|
Отправлено: 24.02.16 17:28. Заголовок: DIGITAL_INPUT press;..
DIGITAL_INPUT press; DIGITAL_OUTPUT time_reset; CHANGE press { CancelAllWait(); wait(500) { if (press=1){pulse(10, time_reset);} } }
|
|
|
|
Отправлено: 24.02.16 17:34. Заголовок: Тут все правильно. С..
Тут все правильно. Смотрите откуда приходит сигнал на вход press (по F2). Если только с xpanel или ниоткуда, то не должен он быть =1 пока не нажмете. В дебагере смотрите его?
|
|
|
|
Отправлено: 24.02.16 17:36. Заголовок: ну там ситуация така..
ну там ситуация такая, он равен нулю это понятно я его зажимаю на 5 секунд, программа перезагружается, а он остается нажатым постоянно почему-то. если его нажать и отпустить он снова становится нулем это смущает)
|
|
|
|
Отправлено: 24.02.16 17:49. Заголовок: Может дебагер не рес..
Может дебагер не рестартуется при soft reset. Рестартуйте дебагер вручную опять выбрав процессор из адресной книги. Врет наверное просто.
|
|
|
|