Пример использования программного управления для работы с КПМ «РИТМ»
РИТМ — это аппаратное решение для запуска моделей в реальном времени. Оно позволяет интегрировать сценарии работы с физическим оборудованием и управлять им непосредственно из Engee.
Чтобы приступить к работе с целевой платформой «РИТМ»:
-
Установите подсистему Engee.Интеграции, как показано в статье.
-
После этого становится доступен модуль работы с внешним оборудованием, обеспечивающий программное управление КПМ «РИТМ». Для подключения модуля введите следующую команду:
using Main.EngeeDeviceManager.Targets: RITM_API -
Добавьте машину РИТМ в Engee через приложение РИТМ.Управление машинами
или через RITM_API.addMachine. -
Установите поддержку блоков РИТМ:
engee.package.install("RITM-Engee-Blocks")
Основные методы работы с РИТМ
Для работы с оборудованием на РИТМе доступны следующие методы:
-
RITM_API.buildModel— собирает модель на РИТМе. -
RITM_API.runModel— запускает модель на РИТМе. -
RITM_API.stopModel— останавливает модель на РИТМе. -
RITM_API.isConnected— проверяет доступность РИТМа. -
RITM_API.isRunning— проверяет, запущена ли модель РИТМа. -
RITM_API.listFiles— возвращает список файлов в указанной директории. -
RITM_API.readFile— возвращает содержимое указанного файла из заданной директории. -
RITM_API.downloadFile— получает указанный файл из заданной директории. -
RITM_API.memInfo— возвращает информацию о потребляемой моделью памяти. -
RITM_API.getLog— возвращает указанное число строк логов выполнения модели на РИТМе. -
RITM_API.getScreenshot— создает скриншот на РИТМе и возвращает путь к файлу изображения. -
RITM_API.getProfileData— возвращает результат профилирования модели на РИТМе.
| Подробное описание каждого метода представлено в статье Программное управление РИТМ. |
Пошаговый пример работы с моделью РИТМ
-
Подключение модулей и добавление машины — импортируем модуль и добавим машину РИТМ:
using Main.EngeeDeviceManager.Targets: RITM_API if !RITM_API.isMachineExists("RITM 1") RITM_API.addMachine("RITM 1", "192.168.56.3") end -
Проверка доступности РИТМ — проверим, установлена ли связь с устройством РИТМ:
RITM_API.isConnected("RITM 1")Если метод возвращает
false, то проверьте имя машины и убедитесь, что клиентская программа запущена на РИТМе. -
Версия прошивки и пакета поддержки — узнаем версии прошивки и пакета поддержки РИТМ:
RITM_API.version("RITM 1") -
Сборка открытой в Engee модели на РИТМе в независимом режиме:
engee.open("/user/Engee-Device-Manager-demos/example_RITM/example_ritm_extmodel.engee") model = engee.gcm() RITM_API.buildModel("RITM 1", model) -
Запуск модели — запустим модель на машине РИТМ:
RITM_API.runModel("RITM 1", model; is_interactive_mode=false)После запуска модель начнет выполняться в заданном ранее режиме (в нашем случае — в независимом).
-
Остановка модели — остановим выполнение всех запущенных моделей на РИТМе:
RITM_API.stopModel("RITM 1") -
Вывод содержимого директории на РИТМ — получим список файлов в указанной директории (
/home/ritm/):RITM_API.listFiles("RITM 1", "/home/ritm/build/example_ritm_extmodel") -
Чтение содержимого файла — выведем содержимое файла
example_ritm_extmodel_profile.txtиз директории/home/ritm/build/example_ritm_extmodel/:RITM_API.readFile("RITM 1", "example_ritm_extmodel_profile.txt"; path="/home/ritm/build/example_ritm_extmodel/") -
Получение файла в текущую директорию — скачаем указанный файл (
example_ritm_extmodel_profile.txt) из директории/home/ritm/build/example_ritm_extmodel/в текущую директорию Engee:RITM_API.downloadFile("RITM 1", "example_ritm_extmodel_profile.txt"; from="/home/ritm/build/example_ritm_extmodel/", to="") -
Получение информации о памяти — запросим данные о потреблении памяти моделью:
engee.open("/user/Engee-Device-Manager-demos/example_RITM/example_ritm_extmodel.engee") model = engee.gcm() RITM_API.buildModel("RITM 1", model) RITM_API.runModel("RITM 1", model) memInfoBytes = RITM_API.memInfo("RITM 1", "example_ritm_extmodel") memInfoMb = memInfoBytes / 1024 println("Used memory: $(memInfoMb) MB") -
Просмотр последних 10 строк логов — получим последние 10 строк журнала выполнения модели:
ritm_log = RITM_API.getLog("RITM 1", 10); print(ritm_log)Их можно использовать для отладки и диагностики модели.
-
Создание скриншота и получение пути к нему — сделаем снимок экрана машины РИТМ:
screenshot_path = RITM_API.getScreenshot("RITM 2", "example.png")Файл выгружается в Engee, а функция возвращает локальный путь к нему.
using FileIO using Images load("example.png") -
Проверка состояния модели — убедимся, что модель запущена на РИТМе:
RITM_API.isRunning("RITM 1", "example_ritm_extmodel")Если функция вернет
true, то модель выполняется. -
Получение данных профилирования — получим данные профилирования модели с РИТМа в виде файла или строки:
RITM_API.getProfileData("RITM 1", "example_ritm_extmodel") -
Загрузка файла — загрузим файл
example_ritm_data.jld2из директории Engee/user/Engee-Device-Manager-demos/example_RITM/в директорию РИТМ/home/ritm/data:RITM_API.uploadFile("RITM 1", "example_ritm_data.jld2"; from="/user/Engee-Device-Manager-demos/example_RITM/", to="/home/ritm/data") -
Удаление файла — удалим загруженный файл
example_ritm_data.jld2на РИТМе:RITM_API.removeFile("RITM 1", "/home/ritm/data/example_ritm_data.jld2") -
Получение диагностики — получим диагностику машины РИТМ:
RITM_API.getDiagnostic("RITM 1")Файл
ritm_diagnostic.zipбудет записан в текущую директорию. -
Перезагрузка — перезагрузим машину РИТМ:
RITM_API.reboot("RITM 1") -
Выключение — выключим машину РИТМ:
RITM_API.poweroff("RITM 1") -
Настройка Ethernet-интерфейса — настроим Ethernet-интерфейс машины РИТМ:
RITM_API.setupEthernet("RITM 1", ethernetNumber, "192.168.0.10", 24) -
Работа с автозапуском
Поместим модель в автозапуск:
RITM_API.setAutostart("RITM 1", model.name)Получим список моделей в автозапуске (пустой, если автозапуск не настроен):
RITM_API.getAutostart("RITM 1")Удалим модель из автозапуска:
RITM_API.disableAutostart("RITM 1")
Пример управления машинами в Engee
-
Список машин — выведем список известных машин в Engee:
RITM_API.getMachines() -
Имя и IP-адрес машины — получим IP-адрес машины по ее имени или имя машины по ее IP-адресу:
RITM_API.getIPByName("RITM 1") RITM_API.getNameByIP("192.168.56.3") -
Добавление машины — добавим машину в список известных в Engee, если она еще не добавлена:
if !RITM_API.isMachineExists("RITM 2") RITM_API.addMachine("RITM 2", "192.168.56.4") end -
Удаление машины — удалим машину по точному имени, если она есть в списке известных в Engee:
if RITM_API.isMachineExists("RITM 2") RITM_API.removeMachine("RITM 2") end