OberonCore
https://forum.oberoncore.ru/

Черный квадрат и синяя бутылка
https://forum.oberoncore.ru/viewtopic.php?f=1&t=6646
Страница 1 из 1

Автор:  adimetrius [ Среда, 12 Август, 2020 15:50 ]
Заголовок сообщения:  Черный квадрат и синяя бутылка

Коллеги, а какие есть способы интеграции ББ и А2?

В идеале, мне бы хотелось из модуля внутри Блекбокса вызвать процедуру, определенную в модуле А2, передать ей параметры, она бы поработала внутри А2 и вернула мне в ББ результаты через параметры-переменные. Ну, если такого счастья нет, то хотя бы через командную строку как-нибудь. Есть ли такое?

Все это на платформе Линукс.

Автор:  Sergej Durmanov [ Среда, 12 Август, 2020 17:55 ]
Заголовок сообщения:  Re: Черный квадрат и синяя бутылка

Собрать а2 с необходимым комплектом модулей в виде dll

Автор:  adimetrius [ Среда, 12 Август, 2020 18:21 ]
Заголовок сообщения:  Re: Черный квадрат и синяя бутылка

Ага, спасибо за ответ; он помог мне лучше понять и уточнить свой запрос. ББ работает в 32-битном режиме, а мне нужно, чтобы А2 работала и выполняла мой запрос в 64-битном режиме. Получается, что IPC не обойти - они должны быть в разных процессах. И тогда мой запрос превращается в:

Какие средства IPC с внешним миром поддерживает А2 в лин?

А)
В простейшем случае я могу передать ей данные в файле и результат тоже взять из файла, и запустить через Dialog.CallExternal.
Наверняка можно собрать А2 чтобы она как утилита командной строки отработала. Где об этом можно прочесть?

Б) если я не захочу то и дело создавать процесс А2, как настроить IPC с работающей А2? Например, как послать ей сигнал, когда я подготовил входные данные?

Автор:  Ярослав Романченко [ Воскресенье, 16 Август, 2020 02:29 ]
Заголовок сообщения:  Re: Черный квадрат и синяя бутылка

Когда A2 стартует с командной оболочкой, то подключается к стандартным потокам ввода-вывода.
Т.е. выполняем, например, "A2.exe run <файл с параметрами>". Если файл существует, из него исполняются команды. Если файла нет, исполняется команда "Shell.Start"
Это место в коде: модуль StdIOShell.Mod, процедура Execute
Потом активности обслуживающие потоки ввода-вывода висят постоянно. По-идее, в потоки ввода-вывода можно писать/читать

Автор:  adimetrius [ Среда, 26 Август, 2020 12:24 ]
Заголовок сообщения:  Re: Черный квадрат и синяя бутылка

В итоге сделал HTTP-сервер на А2, посылаю ему запросы из ББ и получаю асинхронно ответы.

С непривычки замучился программировать в А2: очень привык к "богатому" посмертному отладчику в Черном Квадрате; переходу к месту в исходнике из посмертного дампа (синий ромбик); просмотру интерфейса модуля или символа; и, пожалуй, главное - "богатому" тексту, когда можно использовать цвет/жирность по смыслу, а не по синтаксису. Это подпортило мои впечатления, хотя решить основную свою задачу удалось легко и быстро.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/