Инструменты пользователя

Инструменты сайта


app

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
app [2025/10/03 12:43]
root [Создания интерфейса сигнала]
app [2025/10/09 09:23] (текущий)
root
Строка 130: Строка 130:
 </wrap> </wrap>
 \\ \\
-В функция **main** при запуске передается аргумент **ctx**, содержащий в себе набор объектов, посредством которых можно в дальнейшем взаимодействовать с ядром системы и другими приложениями. В начале функции из нее выбираются наиболее часто используемые объекты, и сохраняются в глобальной области видимости, для удобства дальнейшей работы с ними. В частности это:+В функцию **main** при запуске передается аргумент **ctx**, содержащий в себе набор объектов, посредством которых можно в дальнейшем взаимодействовать с ядром системы и другими приложениями. В начале функции из нее выбираются наиболее часто используемые объекты, и сохраняются в глобальной области видимости, для удобства дальнейшей работы с ними. В частности это:
 \\ \\
 <wrap ks> <wrap ks>
Строка 342: Строка 342:
 ====== Вызов функции из скриптов DevelSCADA ====== ====== Вызов функции из скриптов DevelSCADA ======
 <wrap ks> <wrap ks>
-Помимо взаимодействия между приложениями, данный механизм позволяет работать и с пользовательскими скриптами самой системы DevelSCADA при разработке проектов посредством вызова функции [[ds.rpccall|ds.rpcCall]] ядра исполнения системы.+Помимо взаимодействия между приложениями, данный механизм позволяет работать и с пользовательскими скриптами самой системы DevelSCADA при разработке проектов посредством вызова функции [[ds.rpccall|ds.rpcCall]] ядра исполнения системы. Для примера, создадим в нашем приложении функцию, и вызовем ее из скриптов проекта. 
 +</wrap> 
 +<wrap ks> 
 +Код приложения: 
 +</wrap> 
 + 
 +<code javascript> 
 +'use strict'; 
 + 
 +let logCtx = null, log = null; 
 +let rpc = null, cfg = null; 
 + 
 +async function main(ctx) { 
 +    ({ logCtx, rpc, cfg } = ctx); 
 +    ({ log } = logCtx); 
 +    module.paths.push(ctx.modPath); 
 +     
 +    rpc.regFunc('myFunc', () => { 
 +        const { exec } = require('node:child_process'); 
 +        exec('notepad'); 
 +    }); 
 +
 + 
 +exports.main = main; 
 + 
 +exports.about = { 
 +    mark: 'MA', 
 +    descr: 'Мое приложение',  
 +    isSingle: true, 
 +    isGui: false, 
 +    isPm: false, 
 +    order: 1000, 
 +    depend: [] 
 +}; 
 +</code> 
 +<wrap ks> 
 +В данном приложении мы создали единственную функцию **myFunc**, которая будет из операционной системы запускать блокнот. Запустим это приложение в диспетчере приложений. 
 +</wrap> 
 + 
 +{{ ::app5.png?nolink |}} 
 + 
 +<wrap ks> 
 +Далее в редакторе проектов создадим новый проект, на экране разместим кнопку, и в событии кнопки "Нажатие", выберем действие "Скрипт"
 +</wrap> 
 + 
 +{{ ::app11.png?nolink |}} 
 + 
 +{{ ::app12.png?nolink |}} 
 + 
 +<wrap ks> 
 +Далее напишем следующий код скрипта: 
 +</wrap> 
 + 
 +<code javascript> 
 +async function main(val) { 
 +    await ds.rpcCall('myapp.myFunc'); 
 +
 +</code> 
 + 
 +<wrap ks> 
 +Данный код должен будет вызвать **myFunc** из приложения **myapp**. Запустим проект на исполнение и нажмем кнопку. В результате должен будет открыться блокнот.
 </wrap> </wrap>
  
 +{{ ::app13.png?nolink |}}
  
app.1759484603.txt.gz · Последнее изменение: 2025/10/03 12:43 — root