service - Фонові сервіси
Запуск, зупинка та перегляд скриптів, які працюють у фоні.
- class service
Фонові сервіси - скрипти, які працюють у фоні, поки ви користуєтесь іншими програмами.
Фоновий сервіс не має доступу до екрана та кнопок, тому модулі
display,controller,resources,transforms,UIтаaudioв ньому недоступні. Помилки сервісу виводяться в серійний порт.Сервіс спочатку виконує скрипт повністю, а потім викликає
lilka.init()та раз наservice.intervalсекунд -lilka.update(delta), якщо ці функції визначені. Можна також просто написати нескінченний цикл зutil.sleep().Ім’я сервісу складається з префікса мови та імені файлу без розширення:
lua:autorun,js:blink. Одночасно може працювати лише один сервіс з таким іменем.Автозапуск: якщо в корені SD-карти є файли
autorun.luaабоautorun.js, вони запускаються як фонові сервіси при старті Keira. Автозапуск вимикається в меню «Налаштування» → «Сервіси» → «Автозапуск».Примітка
Сервіс зупиняється під час наступного
util.sleep()або, для Lua, після кількох інструкцій. Блокуючі виклики (наприклад,http.execute) не перериваються. JavaScript-сервіс зупиняється лише під часutil.sleep().Usage:
1-- autorun.lua: блимає світлодіодом на піні 10 у фоні 2local on = false 3gpio.set_mode(10, gpio.OUTPUT) 4 5service.interval = 0.5 -- викликати lilka.update() двічі на секунду 6 7function lilka.update(delta) 8 on = not on 9 gpio.write(10, on and gpio.HIGH or gpio.LOW) 10end
- static start(path)
Запускає Lua (
.lua) або JavaScript (.js) скрипт як фоновий сервіс.Відносний шлях рахується від директорії поточного скрипта.
- Parameters:
path (
str) – шлях до скрипта- Returns:
name ім’я запущеного сервісу, або
nilу разі помилки- Return type:
str or nil- Returns:
err опис помилки
- Return type:
str or nil
Usage:
1local name, err = service.start("blink.lua") 2if name == nil then 3 print("Не вдалося запустити сервіс: " .. err) 4end
- static stop(name)
Зупиняє фоновий сервіс з вказаним ім’ям. Щоб зупинити поточний сервіс, використовуйте
util.exit().- Parameters:
name (
str) – ім’я сервісу- Returns:
stopped
true, якщо сервіс знайдено та попрошено зупинитись- Return type:
boolean
Usage:
1service.stop("lua:blink")
- static list()
Повертає імена всіх запущених фонових сервісів.
- Return type:
list[str]
Usage:
1for _, name in ipairs(service.list()) do 2 print(name) 3end
- static is_running(name)
Перевіряє, чи працює фоновий сервіс з вказаним ім’ям.
- Parameters:
name (
str) – ім’я сервісу- Return type:
boolean