Search the Community
Showing results for tags 'планировщик'.
Found 2 results
-
Просмотреть файл [esp8266] Библиотека Cron, реализует планировщик задач для периодического выполнения пользовательских функций. Основная задача библиотеки, это вызов пользовательских функций через установленный интервал времени. Библиотека работает по схожему принципу с широко известной программой Cron распространяемой в составе UNIX систем. От этой утилиты библиотека и унаследовала название. Библиотека работает исходя из принципов однопоточного выполнения кода в микроконтроллере. Когда обработчик библиотеки получает процессорное время, он проверяет список всех пользовательских задач в поиске задач, которые необходимо выполнить, основываясь на установленном интервале времени для каждой задачи. Данная библиотека предоставляет следующий функционал Позволяет добавлять большое количество пользовательских заданий в виде функций. Количество задач ограничено только их сложностью и свободной памятью микроконтроллера. Предоставляет возможность холодного старта задачи. Дает возможность вызова задачи при старте микроконтроллера с последующим выполнением задачи через установленный интервал времени. Поиск задачи по лексическому идентификатору. Получение время последнего вызова задачи. Обнуление интервала вызова задачи или установку нового интервала в мс. Останавливать задачу на неопределенный срок. Проверять активность задачи. Подключение библиотеки #include <cron.h> Пример добавление задачи, которая вызывает функцию blink_f каждую секунду cron.add(1000, blink_f); Добавление этой же задачи в режиме холодного старта cron.add(1000, blink_f, true); Добавление задачи и присвоение ей человек понятного идентификатора cron.add(1000, blink_f, "Blink"); Добавление задачи с холодным стартом и присвоением ей человек понятного идентификатора cron.add(1000, blink_f, "Blink", true); В качестве временного интервала вызова задачи необходимо указывать количество миллисекунд. Но можно воспользоваться готовыми константами. Фундаментальные константы cron::second cron::minute cron::hour cron::day Самые распространенные значения cron::time_1s cron::time_5s cron::time_10s cron::time_15s cron::time_30s cron::time_1m cron::time_5m cron::time_10m cron::time_15m cron::time_30m cron::time_1h cron::time_5h cron::time_10h cron::time_12h cron::time_1d С константами можно производить арифметические операции чтобы получить необходимые временные интервалы. cron.update("Blink", cron::time_1s); cron.update("Blink", cron::time_1s * 12); cron.update("Blink", cron::time_30s + 500); и т.д В функции loop должна находится команда вызова обработчика. void loop() { cron.handleEvents(); } Поиск задачи по установленному ранее идентификатору cron.find("Blink"); В ответ возвращается объект типа cronEvent который содержит все данные задачи или 0 если задача не была найдена. Можно использовать в качестве простой проверки. if (cron.find("Blink")) { /* … */ } Следующий метод позволяет получить время последнего вызова задачи uint32_t time = cron.lastRun("Blink"); В качестве параметра можно передать идентификатор с типом cronEvent полученный с помощью метода поиска задачи. Перезапуск таймера задачи производится следующим образом cron.update("Blink"); А так можно установить новый интервал вызова задачи cron.update("Blink", cron::time_10m); Остановка выполнения задачи cron.stop("Blink"); Проверка активности задачи bool active = cron.isActive("Blink"); С библиотекой идут несколько примеров. Автор Kitsum Добавлен 09.12.2018 Категория Библиотеки
-
Version 1.0
148 downloads
Основная задача библиотеки, это вызов пользовательских функций через установленный интервал времени. Библиотека работает по схожему принципу с широко известной программой Cron распространяемой в составе UNIX систем. От этой утилиты библиотека и унаследовала название. Библиотека работает исходя из принципов однопоточного выполнения кода в микроконтроллере. Когда обработчик библиотеки получает процессорное время, он проверяет список всех пользовательских задач в поиске задач, которые необходимо выполнить, основываясь на установленном интервале времени для каждой задачи. Данная библиотека предоставляет следующий функционал Позволяет добавлять большое количество пользовательских заданий в виде функций. Количество задач ограничено только их сложностью и свободной памятью микроконтроллера. Предоставляет возможность холодного старта задачи. Дает возможность вызова задачи при старте микроконтроллера с последующим выполнением задачи через установленный интервал времени. Поиск задачи по лексическому идентификатору. Получение время последнего вызова задачи. Обнуление интервала вызова задачи или установку нового интервала в мс. Останавливать задачу на неопределенный срок. Проверять активность задачи. Подключение библиотеки #include <cron.h> Пример добавление задачи, которая вызывает функцию blink_f каждую секунду cron.add(1000, blink_f); Добавление этой же задачи в режиме холодного старта cron.add(1000, blink_f, true); Добавление задачи и присвоение ей человек понятного идентификатора cron.add(1000, blink_f, "Blink"); Добавление задачи с холодным стартом и присвоением ей человек понятного идентификатора cron.add(1000, blink_f, "Blink", true); В качестве временного интервала вызова задачи необходимо указывать количество миллисекунд. Но можно воспользоваться готовыми константами. Фундаментальные константы cron::second cron::minute cron::hour cron::day Самые распространенные значения cron::time_1s cron::time_5s cron::time_10s cron::time_15s cron::time_30s cron::time_1m cron::time_5m cron::time_10m cron::time_15m cron::time_30m cron::time_1h cron::time_5h cron::time_10h cron::time_12h cron::time_1d С константами можно производить арифметические операции чтобы получить необходимые временные интервалы. cron.update("Blink", cron::time_1s); cron.update("Blink", cron::time_1s * 12); cron.update("Blink", cron::time_30s + 500); и т.д В функции loop должна находится команда вызова обработчика. void loop() { cron.handleEvents(); } Поиск задачи по установленному ранее идентификатору cron.find("Blink"); В ответ возвращается объект типа cronEvent который содержит все данные задачи или 0 если задача не была найдена. Можно использовать в качестве простой проверки. if (cron.find("Blink")) { /* … */ } Следующий метод позволяет получить время последнего вызова задачи uint32_t time = cron.lastRun("Blink"); В качестве параметра можно передать идентификатор с типом cronEvent полученный с помощью метода поиска задачи. Перезапуск таймера задачи производится следующим образом cron.update("Blink"); А так можно установить новый интервал вызова задачи cron.update("Blink", cron::time_10m); Остановка выполнения задачи cron.stop("Blink"); Проверка активности задачи bool active = cron.isActive("Blink"); С библиотекой идут несколько примеров.-
- 1
-
- планировщик
- timer
-
(and 3 more)
Tagged with: