Страница 2 из 3

Re: Архитектура Plug-in

Добавлено: 05 фев 2018, 14:08
Stkn
Тоже решил попробовать данную архитектуру. Пришёл к выводу, что для сборки базовой lvlibp лучше заводить отдельный проект, иначе не удаётся сделать билд без удаления этой lvlibp из проекта. Может быть даже лучше для каждого плагина заводить проект, потому что основная vi показывает ошибки, если есть ошибки в плагинах.

Ещё столкнулся с проблеммой, может быть кто-то подскажет как решить:
В базовом классе (который располагается внутри основной lvlibp) есть метод, один из входов которого является другим классом (данный класс служит для передачи данных между различными потоками, нечто похожее на Tasking). Так вот при override этого метода не удаётся подключить к этому классу на входе vi, которые являются его методами. Пишет про конфликт классов.

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 13:42
Stkn
Stkn писал(а): В базовом классе (который располагается внутри основной lvlibp) есть метод, один из входов которого является другим классом (данный класс служит для передачи данных между различными потоками, нечто похожее на Tasking). Так вот при override этого метода не удаётся подключить к этому классу на входе vi, которые являются его методами. Пишет про конфликт классов.
Так как на форуме начали активно обсуждать ООП, подниму тему. Может быть кто-то подскажет решение.

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 13:57
Artem.spb
Будет гораздо проще, если вы закинете простейший пример

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 13:59
Stkn
Artem.spb писал(а):Будет гораздо проще, если вы закините простейший пример
Поясню:
Если на входе одного из методов класса в lvlibp используется какой-то другой объект, то внутри методов этого базового класса не удаётся использовать методы объекта, который был на входе.
Попробую набросать какой-то пример

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 14:21
Artem.spb
методы не приватные часом?

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 14:22
Stkn
Как-то так

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 14:35
Artem.spb
Тяжело понять суть происходящего по картинке, даже если эта картинка - snippet.

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 14:44
Stkn
В библиотеке Basic.lvlib есть класс Basic.lvclass. У класса Basic.lvclass есть метод Test method.vi, у которого на входе был объект типа Support Class.lvclass. Библиотека Basic.lvlib была преобразована в пакетную Basic.lvlibp.
На картинке неудачная попытка подать объект типа Support Class.lvclass на вход Test method.vi из библиотеки Basic.lvlibp

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 14:53
Artem.spb
Вместо того, чтобы третий раз писать, что там у вас присходит, приложите ВЕСЬ неработающий (упрощённый естественно) код.
Этот snippet невозможно перевести в БД, потому что нет ни одного нужного subVI

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 14:59
taras_33
Вот кусок дерева реального "главного" проекта в который я включил несколько плагинов, для того что бы они отображались в окне hierarchy
Project tree.png
Каждый скомпилированный модуль наследуется от своего родителя, скажем от "отца".
Plugin.png
Plugin.png (17 КБ) 4597 просмотров
Отец в свою очередь имеет своего родителя, а тот своего и тд.
Hierarchy.png
Hierarchy.png (10.12 КБ) 4597 просмотров
Каждый "предок" это отдельная скомпилированная библиотека lvlibp.

И при старте - читай загрузке в память плагина, указывается какой тип плагина ожидаем на выходе. По сути в качестве target class должен быть указан родитель.
Father.png
Father.png (10.1 КБ) 4597 просмотров
Ну и естественно младшие дети пользуются методами своих старших родичей....
По крайней мере у меня это работает...

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 15:14
Stkn
Прикладываю тестовый проект. Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 16:41
Artem.spb
Только через одно место получилось.
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
class.png

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 16:51
Stkn
Artem.spb писал(а):Только через одно место получилось.
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
class.png
А оно работает? У меня ошибка 1448

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 17:07
taras_33
Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах
Так и не переносите, а наследуйте
Project Hierarchy.png
Project Hierarchy.png (2.52 КБ) 4579 просмотров
Рекомендую в классах подписывать иконки, когда их наберется в проекте пару десятков. Мозги начнут закипать - кто кому родственник :D
Load.png
Load.png (9.05 КБ) 4579 просмотров
Конечно можно и поизвращатся
weird.png
weird.png (9.91 КБ) 4578 просмотров
Или так (override set num)
Override Set Num.png
Override Set Num.png (7.81 КБ) 4574 просмотра

Re: Архитектура Plug-in

Добавлено: 30 авг 2018, 17:41
Stkn
taras_33 писал(а): Так и не переносите, а наследуйте
Осталось понять, что я делаю не так =)
В проекте Basic я сделал класс Basic наследником Support Class. В проекте Plugin у меня не соединяются vi также, как у вас