Добрый день, Евгений!
Спасибо за быстрый ответ, в целом это помогло в моих поисках. Наверное, я в первом сообщении не смог донести то, что хотел в итоге получить. Я бы хотел, чтобы полностью сохранился и выполнял свою функцию раздел "Управление приложениями CODESYS" в web-интерфейсе ПЛК. Ну то есть чтобы моё автоматическое обновление из CODESYS не ломало бы внешний вид и логику указанного раздела, чтобы также подсвечивался синим активный проект и т.п. Наверное, можно это всё было бы решить через библиотеку FILE, но тасовать файлы через CODESYS для меня сейчас - это просто боль и унижение.
Короче говоря, пришлось поковыряться в файлах ПЛК и там нашёлся prj-man.js, отвечающий за функционал вкладки "Управление приложениями CODESYS". Там я нашёл, во-первых, ссылку на баш-скрипт, который рассовывает файлы из архива с проектом в нужные места и перезагружает среду исполнения (т.е. делает то, что вы и рекомендовали), а во-вторых, название rpc-метода (или я хз как это назвать, честно говоря впервые в жизни видел джаваскрипт), который делает заданный проект "активным" во вкладке "Управление приложениями CODESYS".
В итоге, кусок кода, который делает тоже самое, что и нажатие на кнопку "запустить" в web-интерфейсе, выглядит у меня так:
Код:IF xOTA_UPDATE_ENABLE THEN //тут выше скачали обновление проекта из облачной папки и положили этот архив в папку /home/root/Projects/APP_B //магия ubus - дёргаем напрямую метод, который делает активной папку, в которой лежит наш проект CmpSysExec.sysExecute('ubus call prjman set_actv $'{"name": "APP_B"}$''); //запускаем скрипт, который распакует проект из нашей папки куда надо и перезапустит среду исполнения CmpSysExec.sysExecute('/usr/bin/toprj.sh APP_B'); END_IF




Ответить с цитированием