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

Общие принципы, проектирование, модуляризация, темплейты и шаблоны
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение Stkn »

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

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

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

Сообщение Stkn »

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

Activity Автор
professor
professor
Сообщения: 3387
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Будет гораздо проще, если вы закинете простейший пример
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение Stkn »

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

Activity Автор
professor
professor
Сообщения: 3387
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

методы не приватные часом?
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение Stkn »

Как-то так
Вложения
Img 01.png
Artem.spb

Activity Автор
professor
professor
Сообщения: 3387
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Тяжело понять суть происходящего по картинке, даже если эта картинка - snippet.
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение 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
Artem.spb

Activity Автор
professor
professor
Сообщения: 3387
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

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

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

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

И при старте - читай загрузке в память плагина, указывается какой тип плагина ожидаем на выходе. По сути в качестве target class должен быть указан родитель.
Father.png
Father.png (10.1 КБ) 4594 просмотра
Ну и естественно младшие дети пользуются методами своих старших родичей....
По крайней мере у меня это работает...
Последний раз редактировалось taras_33 30 авг 2018, 15:37, всего редактировалось 1 раз.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение Stkn »

Прикладываю тестовый проект. Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах
Вложения
PPL Test.zip
(177.23 КБ) 160 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3387
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Только через одно место получилось.
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
class.png
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение Stkn »

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

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах
Так и не переносите, а наследуйте
Project Hierarchy.png
Project Hierarchy.png (2.52 КБ) 4576 просмотров
Рекомендую в классах подписывать иконки, когда их наберется в проекте пару десятков. Мозги начнут закипать - кто кому родственник :D
Load.png
Load.png (9.05 КБ) 4576 просмотров
Конечно можно и поизвращатся
weird.png
weird.png (9.91 КБ) 4575 просмотров
Или так (override set num)
Override Set Num.png
Override Set Num.png (7.81 КБ) 4571 просмотр
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

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

Сообщение Stkn »

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

Вернуться в «Модели программирования»