Страница 21 из 31

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

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

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

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

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

Добавлено: 16 авг 2019, 14:07
ujin
в разных местах одно подключение
Не забудьте после каждого vi EXE поставить FREE, а то будет утечка памяти.

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

Добавлено: 19 авг 2019, 15:58
rsv
ujin, я обязательно воспользуюсь Вашими советами для развития работы с базой данных, но сейчас у меня элементарные вещи не получаются.
Почему ссылка на соединение при возвращении из ВПП поменяла тип? Что я не так сделал?

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

Добавлено: 19 авг 2019, 16:30
IvanLis
Ссылка должна быть в единственном экземпляре, зачем Вы инициализацию в массив поместили?

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

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

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

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

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

Добавлено: 22 авг 2019, 09:56
rsv
Задался целью получить имя алиаса для подключения к БД из ini-файла. Получилось, если указать абсолютный путь к ini-файлу. Но прописывать в приложение абсолютный путь - это неправильно. Да и не на каждом ПК можно задать любой путь. Как можно в LabVIEW задать относительный путь? Например, относительно главного ВП в проекте?

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

Добавлено: 22 авг 2019, 11:02
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/) более предпочтителен.

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

Добавлено: 22 авг 2019, 12:30
Blackman
При разработке ключи будут в labview.ini, в приложении (*.exe) в *.ini приложения.
:wink:

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

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

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

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

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

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

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

Добавлено: 26 авг 2019, 13:25
rsv
Вот получился ВПП для инициализации приложения. Выполняет следующее:
1. Открывает ini-файл StandCommon.ini;
2. Считывает алиас из секции Database, ключ Alias;
3. Подключается к базе данных и возвращает ссылку на созданное соединение;
Может кому пригодится...

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

Добавлено: 26 авг 2019, 14:27
Kosist
Стройте путь к файлу проще - не нужно Path конвертировать в String, а потом наоборот.
Build Path.png
Build Path.png (2.17 КБ) 4243 просмотра