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

Общие принципы, проектирование, модуляризация, темплейты и шаблоны

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

Postby Stkn on 05 Feb 2018, 14:08

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

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

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

Postby Stkn on 30 Aug 2018, 13:42

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

Так как на форуме начали активно обсуждать ООП, подниму тему. Может быть кто-то подскажет решение.
Last edited by Stkn on 30 Aug 2018, 13:58, edited 1 time in total.
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

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

Postby Artem.spb on 30 Aug 2018, 13:57

Будет гораздо проще, если вы закинете простейший пример
Artem.spb
expert
expert
 
Posts: 1443
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

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

Postby Stkn on 30 Aug 2018, 13:59

Artem.spb wrote:Будет гораздо проще, если вы закините простейший пример

Поясню:
Если на входе одного из методов класса в lvlibp используется какой-то другой объект, то внутри методов этого базового класса не удаётся использовать методы объекта, который был на входе.
Попробую набросать какой-то пример
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

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

Postby Artem.spb on 30 Aug 2018, 14:21

методы не приватные часом?
Artem.spb
expert
expert
 
Posts: 1443
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

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

Postby Stkn on 30 Aug 2018, 14:22

Как-то так
Attachments
Img 01.png
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

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

Postby Artem.spb on 30 Aug 2018, 14:35

Тяжело понять суть происходящего по картинке, даже если эта картинка - snippet.
Artem.spb
expert
expert
 
Posts: 1443
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

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

Postby Stkn on 30 Aug 2018, 14:44

В библиотеке Basic.lvlib есть класс Basic.lvclass. У класса Basic.lvclass есть метод Test method.vi, у которого на входе был объект типа Support Class.lvclass. Библиотека Basic.lvlib была преобразована в пакетную Basic.lvlibp.
На картинке неудачная попытка подать объект типа Support Class.lvclass на вход Test method.vi из библиотеки Basic.lvlibp
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

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

Postby Artem.spb on 30 Aug 2018, 14:53

Вместо того, чтобы третий раз писать, что там у вас присходит, приложите ВЕСЬ неработающий (упрощённый естественно) код.
Этот snippet невозможно перевести в БД, потому что нет ни одного нужного subVI
Artem.spb
expert
expert
 
Posts: 1443
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

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

Postby taras_33 on 30 Aug 2018, 14:59

Вот кусок дерева реального "главного" проекта в который я включил несколько плагинов, для того что бы они отображались в окне hierarchy
Project tree.png


Каждый скомпилированный модуль наследуется от своего родителя, скажем от "отца".
Plugin.png
Plugin.png (17 KiB) Viewed 514 times

Отец в свою очередь имеет своего родителя, а тот своего и тд.
Hierarchy.png
Hierarchy.png (10.12 KiB) Viewed 514 times

Каждый "предок" это отдельная скомпилированная библиотека lvlibp.

И при старте - читай загрузке в память плагина, указывается какой тип плагина ожидаем на выходе. По сути в качестве target class должен быть указан родитель.
Father.png
Father.png (10.1 KiB) Viewed 514 times

Ну и естественно младшие дети пользуются методами своих старших родичей....
По крайней мере у меня это работает...
Last edited by taras_33 on 30 Aug 2018, 15:37, edited 1 time in total.
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!
User avatar
taras_33
developer
developer
 
Posts: 256
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Stkn on 30 Aug 2018, 15:14

Прикладываю тестовый проект. Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах
Attachments
PPL Test.zip
(177.23 KiB) Downloaded 17 times
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

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

Postby Artem.spb on 30 Aug 2018, 16:41

Только через одно место получилось.
создать константу на входе функции и сделать странное.
Классы отличаются именами, вот и не могут поделить, что кому
class.png
Artem.spb
expert
expert
 
Posts: 1443
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 248
CLD hardware I/O VIP freelance

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

Postby Stkn on 30 Aug 2018, 16:51

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

А оно работает? У меня ошибка 1448
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

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

Postby taras_33 on 30 Aug 2018, 17:07

Перенести Support Class в Basic.lvlib нельзя, т.к. Support Class из библиотеки, которая используются в других проектах

Так и не переносите, а наследуйте
Project Hierarchy.png
Project Hierarchy.png (2.52 KiB) Viewed 496 times

Рекомендую в классах подписывать иконки, когда их наберется в проекте пару десятков. Мозги начнут закипать - кто кому родственник :D
Load.png
Load.png (9.05 KiB) Viewed 496 times


Конечно можно и поизвращатся
weird.png
weird.png (9.91 KiB) Viewed 495 times


Или так (override set num)
Override Set Num.png
Override Set Num.png (7.81 KiB) Viewed 491 times
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!
User avatar
taras_33
developer
developer
 
Posts: 256
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 121
CLD VIP

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

Postby Stkn on 30 Aug 2018, 17:41

taras_33 wrote:Так и не переносите, а наследуйте

Осталось понять, что я делаю не так =)
В проекте Basic я сделал класс Basic наследником Support Class. В проекте Plugin у меня не соединяются vi также, как у вас
Stkn
assistant
assistant
 
Posts: 123
Joined: 25 Jan 2009, 11:08
LabVIEW Version: 2014
Karma: 10
CLAD

PreviousNext

Return to Модели программирования

Who is online

Users browsing this forum: No registered users and 2 guests

cron