Архитектура Plug-in
Re: Архитектура Plug-in
Тоже решил попробовать данную архитектуру. Пришёл к выводу, что для сборки базовой lvlibp лучше заводить отдельный проект, иначе не удаётся сделать билд без удаления этой lvlibp из проекта. Может быть даже лучше для каждого плагина заводить проект, потому что основная vi показывает ошибки, если есть ошибки в плагинах.
Ещё столкнулся с проблеммой, может быть кто-то подскажет как решить:
В базовом классе (который располагается внутри основной lvlibp) есть метод, один из входов которого является другим классом (данный класс служит для передачи данных между различными потоками, нечто похожее на Tasking). Так вот при override этого метода не удаётся подключить к этому классу на входе vi, которые являются его методами. Пишет про конфликт классов.
Ещё столкнулся с проблеммой, может быть кто-то подскажет как решить:
В базовом классе (который располагается внутри основной lvlibp) есть метод, один из входов которого является другим классом (данный класс служит для передачи данных между различными потоками, нечто похожее на Tasking). Так вот при override этого метода не удаётся подключить к этому классу на входе vi, которые являются его методами. Пишет про конфликт классов.
Re: Архитектура Plug-in
Так как на форуме начали активно обсуждать ООП, подниму тему. Может быть кто-то подскажет решение.Stkn писал(а): В базовом классе (который располагается внутри основной lvlibp) есть метод, один из входов которого является другим классом (данный класс служит для передачи данных между различными потоками, нечто похожее на Tasking). Так вот при override этого метода не удаётся подключить к этому классу на входе vi, которые являются его методами. Пишет про конфликт классов.
Последний раз редактировалось Stkn 30 авг 2018, 13:58, всего редактировалось 1 раз.
Re: Архитектура Plug-in
Поясню:Artem.spb писал(а):Будет гораздо проще, если вы закините простейший пример
Если на входе одного из методов класса в lvlibp используется какой-то другой объект, то внутри методов этого базового класса не удаётся использовать методы объекта, который был на входе.
Попробую набросать какой-то пример
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Архитектура Plug-in
Тяжело понять суть происходящего по картинке, даже если эта картинка - snippet.
Re: Архитектура Plug-in
В библиотеке Basic.lvlib есть класс Basic.lvclass. У класса Basic.lvclass есть метод Test method.vi, у которого на входе был объект типа Support Class.lvclass. Библиотека Basic.lvlib была преобразована в пакетную Basic.lvlibp.
На картинке неудачная попытка подать объект типа Support Class.lvclass на вход Test method.vi из библиотеки Basic.lvlibp
На картинке неудачная попытка подать объект типа Support Class.lvclass на вход Test method.vi из библиотеки Basic.lvlibp
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Архитектура Plug-in
Вместо того, чтобы третий раз писать, что там у вас присходит, приложите ВЕСЬ неработающий (упрощённый естественно) код.
Этот snippet невозможно перевести в БД, потому что нет ни одного нужного subVI
Этот snippet невозможно перевести в БД, потому что нет ни одного нужного subVI
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Архитектура Plug-in
Вот кусок дерева реального "главного" проекта в который я включил несколько плагинов, для того что бы они отображались в окне hierarchy
И при старте - читай загрузке в память плагина, указывается какой тип плагина ожидаем на выходе. По сути в качестве target class должен быть указан родитель. Ну и естественно младшие дети пользуются методами своих старших родичей....
По крайней мере у меня это работает...
Каждый скомпилированный модуль наследуется от своего родителя, скажем от "отца".
Отец в свою очередь имеет своего родителя, а тот своего и тд.
Каждый "предок" это отдельная скомпилированная библиотека lvlibp.И при старте - читай загрузке в память плагина, указывается какой тип плагина ожидаем на выходе. По сути в качестве target class должен быть указан родитель. Ну и естественно младшие дети пользуются методами своих старших родичей....
По крайней мере у меня это работает...
Последний раз редактировалось 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!
So far, the Universe is winning!
Re: Архитектура Plug-in
Прикладываю тестовый проект. Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах
- Вложения
-
- PPL Test.zip
- (177.23 КБ) 161 скачивание
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Архитектура Plug-in
Только через одно место получилось.
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
Re: Архитектура Plug-in
А оно работает? У меня ошибка 1448Artem.spb писал(а):Только через одно место получилось.
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Архитектура Plug-in
Так и не переносите, а наследуйте Рекомендую в классах подписывать иконки, когда их наберется в проекте пару десятков. Мозги начнут закипать - кто кому родственник Конечно можно и поизвращатся Или так (override set num)Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах
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!
So far, the Universe is winning!
Re: Архитектура Plug-in
Осталось понять, что я делаю не так =)taras_33 писал(а): Так и не переносите, а наследуйте
В проекте Basic я сделал класс Basic наследником Support Class. В проекте Plugin у меня не соединяются vi также, как у вас