Советы по программированию на LabVIEW

Простейшие вопросы в области инженерной разработки
rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

База MS SQL Server. Подключаюсь через системный DSN. Для работы с базой использую ВП, имена которых начинаются на DB Tools. Наверное это и есть Database Connectivity Toolkit.
Из Вашего примера понятно как создать ссылку на файл подключения к базе данных. А я хотел создать ссылку на уже состоявшееся подключение что бы использовать его для нескольких выборок.
Пример из вложения у меня работает. Создаётся подключение, возвращает одно поле и закрывает подключение. Теперь я хочу выделенную красным часть кода вынести в ВПП, чтобы использовать в разных местах одно подключение, не закрывая его. Загвоздка в том, что я не понимаю как вернуть из ВПП ссылку на подключение.
Вложения
Уставки, блок-схема.PNG

ujin
junior
junior
Сообщения: 68
Зарегистрирован: 28 июл 2019, 13:16
Репутация: 0
Версия LabVIEW: 19
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение ujin »

У vi Open Connection выделенного Вами есть выход connection reference. Это и есть ссылка для всех последующих блоков. В вынесенном блоке просто ее повторите.
Как создавать vi, добавлять входы выходы, подключать думаю Вы знаете.
Эту ссылку можно использовать по времени столько, сколько позволяют настройки в SQL сервере. Последний vi в этой цепи Close Connection понятно закрывает соединение.
При ошибке от предыдущих блоков (даже если не установилось соединение) лучше закрывать соединение. После закрытия соединения в любом месте по connection reference все остальные vi, использующие ее будут давать ошибку.
Второй вариант открывать еще несколько соединений с этой же базой. Так же в зависимости от настроек количества подключений в базе способ нормально работает. В этом случае можно в разных циклах накидывать данных, а СУБД сама будет с очередью разбираться.

ujin
junior
junior
Сообщения: 68
Зарегистрирован: 28 июл 2019, 13:16
Репутация: 0
Версия LabVIEW: 19
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение ujin »

в разных местах одно подключение
Не забудьте после каждого vi EXE поставить FREE, а то будет утечка памяти.
Вложения
DB.jpg

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

ujin, я обязательно воспользуюсь Вашими советами для развития работы с базой данных, но сейчас у меня элементарные вещи не получаются.
Почему ссылка на соединение при возвращении из ВПП поменяла тип? Что я не так сделал?
Вложения
03_Init.PNG
04_ссылка на соединение.png

Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
professor
professor
Сообщения: 4922
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Репутация: 0
Версия LabVIEW: 2015, 2016
Откуда: СССР

Re: Советы по программированию на LabVIEW

Сообщение IvanLis »

Ссылка должна быть в единственном экземпляре, зачем Вы инициализацию в массив поместили?

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

зачем Вы инициализацию в массив поместили?
Вообще-то я просто хотел что бы этот код выполнился только один раз :)
Выкину цикл и попробую соединить...

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

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

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Задался целью получить имя алиаса для подключения к БД из ini-файла. Получилось, если указать абсолютный путь к ini-файлу. Но прописывать в приложение абсолютный путь - это неправильно. Да и не на каждом ПК можно задать любой путь. Как можно в LabVIEW задать относительный путь? Например, относительно главного ВП в проекте?
Вложения
05_алиас из ini-файла.PNG
05_алиас из ini-файла.PNG (8.36 КБ) 2596 просмотров

Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
professor
professor
Сообщения: 4922
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Репутация: 0
Версия LabVIEW: 2015, 2016
Откуда: СССР

Re: Советы по программированию на LabVIEW

Сообщение IvanLis »

rsv писал(а):Как можно в LabVIEW задать относительный путь? Например, относительно главного ВП в проекте?
В палитре File Constant:
- Current VI's Path - относительно VI, но нужно быть аккуратным, т.к. при компиляции путь изменяется и нужно контролировать среду выполнения (https://knowledge.ni.com/KnowledgeArtic ... AM&l=ru-RU)
- Application Directory (http://zone.ni.com/reference/en-XX/help ... directory/) более предпочтителен.

Blackman

Activity
leader
leader
Сообщения: 918
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Репутация: 0
Версия LabVIEW: 6.1,8.5,20
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Blackman »

При разработке ключи будут в labview.ini, в приложении (*.exe) в *.ini приложения.
:wink:
Вложения
Preferences File Path BD.png

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

IvanLis, спасибо. Поэксперементирую с обеими функциями.
в приложении (*.exe) в *.ini приложения.
Собственно, это и планировалось. Application Directory, скорее всего, и вернёт путь, где находится ехе.

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Current VI's Path возвращает полный путь с именем файла, а Application Directory - только путь. При выполнении из ЕХЕ пути показывает одинаковые, а из среды в моём случае пути получились разные. С этим понятно.
Интересно другое. Для исполняемого файла LabVIEW создаёт свой ini-файл, совпадающий по имени с исполняемым файлом и записывает в него свои настройки. А если в проект добавить самописный ini-файл, то этот самописный файл полностью заменит файл, созданный LabVIEW и все настройки которые из него пропадают. Я не разбирался с этими настройками, но они, наверное, тоже важны для работы ЕХЕ? Может как-то можно сохранить свои настройки и настройки среды в один файл?

Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
professor
professor
Сообщения: 4922
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Репутация: 0
Версия LabVIEW: 2015, 2016
Откуда: СССР

Re: Советы по программированию на LabVIEW

Сообщение IvanLis »

rsv писал(а):Может как-то можно сохранить свои настройки и настройки среды в один файл?
Да можно, как раз недавно обсуждалось посмотрите эту тему

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Вот получился ВПП для инициализации приложения. Выполняет следующее:
1. Открывает ini-файл StandCommon.ini;
2. Считывает алиас из секции Database, ключ Alias;
3. Подключается к базе данных и возвращает ссылку на созданное соединение;
Может кому пригодится...
Вложения
06_Инициализация приложения.PNG
06_Инициализация приложения.PNG (10.8 КБ) 2463 просмотра

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1067
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Репутация: 0
Версия LabVIEW: 2013-2017
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Kosist »

Стройте путь к файлу проще - не нужно Path конвертировать в String, а потом наоборот.
Build Path.png
Build Path.png (2.17 КБ) 2449 просмотров
Мы делили апельсин - много наших полегло...

Ответить

Вернуться в «Для чайников»