Автор | Сообщение |
|
Отправлено: 24.02.16 16:59. Заголовок: Часы в simpl+
Здравствуйте, скажите, а возможно ли на simpl+ сделать что-то связанное со временем? например, каждый день в 12-00 на таком то выходе появляется импульс? И похожий, но не совсем такой вариант - возможно ли как-то сделать, чтобы на выходе симпл+ модуля появлялся импульс каждые, например, 100 секунд? Спасибо
|
|
|
Ответов - 12
[только новые]
|
|
|
Отправлено: 24.02.16 17:45. Заголовок: 1.Стандартный when н..
1.Стандартный when не катит с time=12.00.00.00s ? 2.А что стандартный oscillator не катит с hi_time=0.1s и lo_time=99.9s?
|
|
|
|
Отправлено: 24.02.16 17:51. Заголовок: Вячеслав ну я для к..
Вячеслав ну я для кругозора в целом интересуюсь, никогда не помешает узнать новые команды - вдруг пригодятся для чего-то позамысловатей)
|
|
|
|
Отправлено: 24.02.16 18:05. Заголовок: При всей моей любви ..
При всей моей любви к simpl+ тут действительно нужен повод чтоб не воспользоваться сначала стандартным набором. Есть функция time() возвращающая время в строковом 24-часовом формате типа "14:25:32". Но чтоб на+ написать обработчик события для 12:00:00 потребуется десяток строк кода. Да и правильнее будет использовать для такого модуля внешний oscillator чем организовывать внутренний цикл с проверкой каждые 0.5s и разпарсивая функцией mid() значения функции time()
|
|
|
|
Отправлено: 24.02.16 18:17. Заголовок: Вариант (для 12-00):..
Вариант (для 12-00): DIGITAL_INPUT START; DIGITAL_OUTPUT OUT; Function function_when() { if((mid(time(),1,2)="12")&&(mid(time(),4,2)="00")&&(mid(time(),7,2)="00")) { pulse(1,out); } wait(50){function_when();} } PUSH START { function_when(); } На вход START можно поставить 1 как константу.
|
|
|
|
Отправлено: 25.02.16 10:52. Заголовок: Вячеслав спасибо, ща..
Вячеслав спасибо, щас проверим в деле
|
|
|
|
Отправлено: 25.02.16 11:27. Заголовок: Вячеслав не знаю по..
Вячеслав не знаю почему, но есть такая ситуация у меня подряд идут Clock Driver - When и Soft Reset. Ставлю время на When, Clock Driver без параметра и пульс длиной 1с или 1 тик. Но почему-то когда наступает время он перезапускает программу раз 7-8. Там местами пульс на софт ресет проскакивает. Но от его длительности это не зависит. Что это может быть??
|
|
|
|
Отправлено: 25.02.16 13:32. Заголовок: kislez2015 пишет: В..
kislez2015 пишет: цитата: | Вячеслав не знаю почему, но есть такая ситуация у меня подряд идут Clock Driver - When и Soft Reset. Ставлю время на When, Clock Driver без параметра и пульс длиной 1с или 1 тик. Но почему-то когда наступает время он перезапускает программу раз 7-8. Там местами пульс на софт ресет проскакивает. Но от его длительности это не зависит. Что это может быть?? |
| возможно, это конечно связано с тем, что у Крестрона время обновляется редко но в тулбоксе, где процессору задается время, оно менялось каждые 5 секунд, а перезагружается он где-то в течение 12 секунд эти 7-8 раз
|
|
|
|
Отправлено: 25.02.16 18:37. Заголовок: Быстро однако он у в..
Быстро однако он у вас перезагружается. 7-8 раз за 12 сек Вы время в модуле When поставили с сотыми долями или только с точностью до секунды? На крайний случай добавьте еще One Shot 1s после When
|
|
|
|
Отправлено: 26.02.16 08:15. Заголовок: Вячеслав время поста..
Вячеслав время поставил с точностью до сотых нет, перезагружается не крестрон, а программа- это soft reset если до софт ресета поставить delay 10 секунд, он ее перезапускает 2 раза. Если 11 секунд, то уже раз может он время обновлять раз в 11 секунд?
|
|
|
|
Отправлено: 26.02.16 09:59. Заголовок: Видимо есть какой то..
Видимо есть какой то нюанс. Но главное костыль найден.
|
|
|
|
Отправлено: 26.02.16 10:55. Заголовок: Вячеслав пишет: Вид..
Вячеслав пишет: цитата: | Видимо есть какой то нюанс. Но главное костыль найден. |
| ну да, либо delay, либо one shot а можно еще вопрос? зачем тут в функции ссылка на эту же функцию? и если это не опечатка, то как это работает - будешь задержка вывода функции из модуля, или как? Вячеслав пишет: цитата: | Function function_when() { if((mid(time(),1,2)="12")&&(mid(time(),4,2)="00")&&(mid(time(),7,2)="00")) { pulse(1,out); } wait(50){function_when();} } |
|
|
|
|
|
|
Отправлено: 27.02.16 14:45. Заголовок: Это называется РЕКУР..
Это называется РЕКУРСИЯ (вызов функцией самой себя) Каждые 0.5s функция сравнивает текущее время с заданным (12.00.00), если время совпало генерируется импульс по выходу out, потом взывает сама себя через следующие 0.5s чтобы выполнить сравнение опять. По сути это бесконечный цикл.
|
|
|
|