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

Простейшие вопросы в области инженерной разработки

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

Postby rsv on 16 Aug 2019, 10:57

База MS SQL Server. Подключаюсь через системный DSN. Для работы с базой использую ВП, имена которых начинаются на DB Tools. Наверное это и есть Database Connectivity Toolkit.
Из Вашего примера понятно как создать ссылку на файл подключения к базе данных. А я хотел создать ссылку на уже состоявшееся подключение что бы использовать его для нескольких выборок.
Пример из вложения у меня работает. Создаётся подключение, возвращает одно поле и закрывает подключение. Теперь я хочу выделенную красным часть кода вынести в ВПП, чтобы использовать в разных местах одно подключение, не закрывая его. Загвоздка в том, что я не понимаю как вернуть из ВПП ссылку на подключение.
Attachments
Уставки, блок-схема.PNG
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby ujin on 16 Aug 2019, 13:57

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

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

Postby ujin on 16 Aug 2019, 14:07

в разных местах одно подключение

Не забудьте после каждого vi EXE поставить FREE, а то будет утечка памяти.
Attachments
DB.jpg
ujin
beginner
beginner
 
Posts: 23
Joined: 28 Jul 2019, 13:16
LabVIEW Version: 15
Karma: 4

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

Postby rsv on 19 Aug 2019, 15:58

ujin, я обязательно воспользуюсь Вашими советами для развития работы с базой данных, но сейчас у меня элементарные вещи не получаются.
Почему ссылка на соединение при возвращении из ВПП поменяла тип? Что я не так сделал?
Attachments
03_Init.PNG
04_ссылка на соединение.png
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby IvanLis on 19 Aug 2019, 16:30

Ссылка должна быть в единственном экземпляре, зачем Вы инициализацию в массив поместили?
User avatar
IvanLis
professor
professor
 
Posts: 4829
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 782
hardware VIP bloggers teachers

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

Postby rsv on 20 Aug 2019, 15:49

зачем Вы инициализацию в массив поместили?

Вообще-то я просто хотел что бы этот код выполнился только один раз :)
Выкину цикл и попробую соединить...
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby rsv on 21 Aug 2019, 09:28

Ну вот, общими усилиями участников форума удалось получить ссылку на соединение из ВПП и использовать для получения данных в ВП верхнего уровня.
Самым сложным для меня оказалось осмыслить, что для возвращения ссылки на соединение из ВПП надо в этом ВПП создать индикатор, т.к. передать данные из ВПП можно только с помощью индикаторов.
Поправьте, если не прав.
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby rsv on 22 Aug 2019, 09:56

Задался целью получить имя алиаса для подключения к БД из ini-файла. Получилось, если указать абсолютный путь к ini-файлу. Но прописывать в приложение абсолютный путь - это неправильно. Да и не на каждом ПК можно задать любой путь. Как можно в LabVIEW задать относительный путь? Например, относительно главного ВП в проекте?
Attachments
05_алиас из ini-файла.PNG
05_алиас из ini-файла.PNG (8.36 KiB) Viewed 810 times
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby IvanLis on 22 Aug 2019, 11:02

rsv wrote:Как можно в 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/) более предпочтителен.
User avatar
IvanLis
professor
professor
 
Posts: 4829
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 782
hardware VIP bloggers teachers

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

Postby Blackman on 22 Aug 2019, 12:30

При разработке ключи будут в labview.ini, в приложении (*.exe) в *.ini приложения.
:wink:
Attachments
Preferences File Path BD.png
Blackman
leader
leader
 
Posts: 883
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 259
VIP

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

Postby rsv on 22 Aug 2019, 13:05

IvanLis, спасибо. Поэксперементирую с обеими функциями.

в приложении (*.exe) в *.ini приложения.

Собственно, это и планировалось. Application Directory, скорее всего, и вернёт путь, где находится ехе.
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby rsv on 23 Aug 2019, 07:32

Current VI's Path возвращает полный путь с именем файла, а Application Directory - только путь. При выполнении из ЕХЕ пути показывает одинаковые, а из среды в моём случае пути получились разные. С этим понятно.
Интересно другое. Для исполняемого файла LabVIEW создаёт свой ini-файл, совпадающий по имени с исполняемым файлом и записывает в него свои настройки. А если в проект добавить самописный ini-файл, то этот самописный файл полностью заменит файл, созданный LabVIEW и все настройки которые из него пропадают. Я не разбирался с этими настройками, но они, наверное, тоже важны для работы ЕХЕ? Может как-то можно сохранить свои настройки и настройки среды в один файл?
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby IvanLis on 23 Aug 2019, 09:53

rsv wrote:Может как-то можно сохранить свои настройки и настройки среды в один файл?

Да можно, как раз недавно обсуждалось посмотрите эту тему
User avatar
IvanLis
professor
professor
 
Posts: 4829
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 782
hardware VIP bloggers teachers

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

Postby rsv on 26 Aug 2019, 13:25

Вот получился ВПП для инициализации приложения. Выполняет следующее:
1. Открывает ini-файл StandCommon.ini;
2. Считывает алиас из секции Database, ключ Alias;
3. Подключается к базе данных и возвращает ссылку на созданное соединение;
Может кому пригодится...
Attachments
06_Инициализация приложения.PNG
06_Инициализация приложения.PNG (10.8 KiB) Viewed 677 times
rsv
beginner
beginner
 
Posts: 39
Joined: 18 Jul 2019, 13:53
LabVIEW Version: 2018
Karma: 0

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

Postby Kosist on 26 Aug 2019, 14:27

Стройте путь к файлу проще - не нужно Path конвертировать в String, а потом наоборот.
Build Path.png
Build Path.png (2.17 KiB) Viewed 663 times
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 987
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

PreviousNext

Return to Для чайников

Who is online

Users browsing this forum: Bing [Bot], Google and 1 guest

cron