Source distribution

Создание приложений, библиотек, инсталляторов
Ответить
Аватара пользователя
ladik

Silver
developer
developer
Сообщения: 275
Зарегистрирован: 18 ноя 2014, 11:45
Награды: 1
Версия LabVIEW: 2015, 2019
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 3 раза
Контактная информация:

Source distribution

Сообщение ladik »

Коллеги, приветствую!

Разрабатываю тесты для проверки работоспособности железа. Система тестирования Заказчика требует, чтобы каждый тест "был в себе", т.е. упакован в llb и не имел каких-либо внешних зависимостей. Для упрощения работы с измерительным оборудованием был написан HAL и API к нему с помощью LabVIEW OOP, но возникла проблема - VI, находящиется в llb не поддерживают dynamic dispatching, т.е. классы я запокавать таким образом не могу. Каким образом можно решить такую проблему и можно ли вообще? Предполагаю, вынесением классов вне llb, в папку рядышком с тестом, но пока не понимаю как это реализовать.
Дорогу осилит идущий.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Source distribution

Сообщение Borjomy_1 »

ladik писал(а):Для упрощения работы с измерительным оборудованием был написан HAL и API к нему с помощью LabVIEW OOP
Не всякое упрощение полезно. Так ли необходимы классы? Посмею высказать мысль, что классы оправданы исключительно для коллективной работы над проектом, когда пользователи и изготовители класса - разные люди.
Аватара пользователя
ladik

Silver
developer
developer
Сообщения: 275
Зарегистрирован: 18 ноя 2014, 11:45
Награды: 1
Версия LabVIEW: 2015, 2019
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Source distribution

Сообщение ladik »

В целом использование классов было вызвано именно этим. Помимо собранных тестов, Заказчик хочет видеть простую в использовании библиотеку, с помощью которой он бы смог сам разрабатывать тесты. В случае каких-то изменений на уровне железа, код тестов меняться не должен. Ничего более удобного для этих задач придумать не получилось.
Дорогу осилит идущий.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Source distribution

Сообщение Borjomy_1 »

Т.е заказчик хочет и рыбку съесть и на елку влезть
Аватара пользователя
taras_33

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

Re: Source distribution

Сообщение taras_33 »

Попробуйте использовать PPL т.е. имеется класс, с абстрактными методами, который скомпилирован в PPL и класс(ы) которые наследуются от этого абстрактного класса, с конкретной реализацией его методов... Ну и главное приложение (exe) которое управляет всем этим хозяйством. У меня такая архитектура работает.
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!
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Source distribution

Сообщение Blackman »

Здесь Андрей Дмитриев все разложил по полкам :wink:
Classes in llb or multiple classes in same folder?
https://forums.ni.com/t5/LabVIEW/Classe ... -p/1073695
Аватара пользователя
ladik

Silver
developer
developer
Сообщения: 275
Зарегистрирован: 18 ноя 2014, 11:45
Награды: 1
Версия LabVIEW: 2015, 2019
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Source distribution

Сообщение ladik »

К главному приложению доступа, к сожалению нет. Т.е. я не могу туда встроить абстрактный класс. Exe на вход получает llb, vi's которой описаны отдельным конфиг файлом - с этим ничего не поделать.
Дорогу осилит идущий.
Аватара пользователя
ladik

Silver
developer
developer
Сообщения: 275
Зарегистрирован: 18 ноя 2014, 11:45
Награды: 1
Версия LabVIEW: 2015, 2019
Откуда: Екатеринбург
Благодарил (а): 4 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Source distribution

Сообщение ladik »

taras_33, Blackman, спасибо за наводки :drink:, примерно к такому же сценарию и пришёл. С той лишь разницей, что VI's с классами, методами, драйверами железа хранятся не в llb, а просто рядом в папке, хотя тут можно и по отдельным llb распихать. Споткнулся на том моменте, что по такому же принципу нужно было FGV запускать, которая хранит ссылки на инстансы классов. Ошибка была в том, что после вызова FGV через Call by Reference закрывал на неё ссылку, таким образом FGV выгружалась из памяти и не хранила значения между вызовами, после правки всё заработало.
Вложения
Example.png
Дорогу осилит идущий.
Ответить

Вернуться в «Создание приложений»