Советы по программированию на LabVIEW
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
База MS SQL Server. Подключаюсь через системный DSN. Для работы с базой использую ВП, имена которых начинаются на DB Tools. Наверное это и есть Database Connectivity Toolkit.
Из Вашего примера понятно как создать ссылку на файл подключения к базе данных. А я хотел создать ссылку на уже состоявшееся подключение что бы использовать его для нескольких выборок.
Пример из вложения у меня работает. Создаётся подключение, возвращает одно поле и закрывает подключение. Теперь я хочу выделенную красным часть кода вынести в ВПП, чтобы использовать в разных местах одно подключение, не закрывая его. Загвоздка в том, что я не понимаю как вернуть из ВПП ссылку на подключение.
Из Вашего примера понятно как создать ссылку на файл подключения к базе данных. А я хотел создать ссылку на уже состоявшееся подключение что бы использовать его для нескольких выборок.
Пример из вложения у меня работает. Создаётся подключение, возвращает одно поле и закрывает подключение. Теперь я хочу выделенную красным часть кода вынести в ВПП, чтобы использовать в разных местах одно подключение, не закрывая его. Загвоздка в том, что я не понимаю как вернуть из ВПП ссылку на подключение.
-
- user
- Сообщения: 94
- Зарегистрирован: 28 июл 2019, 13:16
- Версия LabVIEW: 19
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
У vi Open Connection выделенного Вами есть выход connection reference. Это и есть ссылка для всех последующих блоков. В вынесенном блоке просто ее повторите.
Как создавать vi, добавлять входы выходы, подключать думаю Вы знаете.
Эту ссылку можно использовать по времени столько, сколько позволяют настройки в SQL сервере. Последний vi в этой цепи Close Connection понятно закрывает соединение.
При ошибке от предыдущих блоков (даже если не установилось соединение) лучше закрывать соединение. После закрытия соединения в любом месте по connection reference все остальные vi, использующие ее будут давать ошибку.
Второй вариант открывать еще несколько соединений с этой же базой. Так же в зависимости от настроек количества подключений в базе способ нормально работает. В этом случае можно в разных циклах накидывать данных, а СУБД сама будет с очередью разбираться.
Как создавать vi, добавлять входы выходы, подключать думаю Вы знаете.
Эту ссылку можно использовать по времени столько, сколько позволяют настройки в SQL сервере. Последний vi в этой цепи Close Connection понятно закрывает соединение.
При ошибке от предыдущих блоков (даже если не установилось соединение) лучше закрывать соединение. После закрытия соединения в любом месте по connection reference все остальные vi, использующие ее будут давать ошибку.
Второй вариант открывать еще несколько соединений с этой же базой. Так же в зависимости от настроек количества подключений в базе способ нормально работает. В этом случае можно в разных циклах накидывать данных, а СУБД сама будет с очередью разбираться.
-
- user
- Сообщения: 94
- Зарегистрирован: 28 июл 2019, 13:16
- Версия LabVIEW: 19
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Не забудьте после каждого vi EXE поставить FREE, а то будет утечка памяти.в разных местах одно подключение
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
ujin, я обязательно воспользуюсь Вашими советами для развития работы с базой данных, но сейчас у меня элементарные вещи не получаются.
Почему ссылка на соединение при возвращении из ВПП поменяла тип? Что я не так сделал?
Почему ссылка на соединение при возвращении из ВПП поменяла тип? Что я не так сделал?
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Советы по программированию на LabVIEW
Ссылка должна быть в единственном экземпляре, зачем Вы инициализацию в массив поместили?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Вообще-то я просто хотел что бы этот код выполнился только один раз :)зачем Вы инициализацию в массив поместили?
Выкину цикл и попробую соединить...
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Ну вот, общими усилиями участников форума удалось получить ссылку на соединение из ВПП и использовать для получения данных в ВП верхнего уровня.
Самым сложным для меня оказалось осмыслить, что для возвращения ссылки на соединение из ВПП надо в этом ВПП создать индикатор, т.к. передать данные из ВПП можно только с помощью индикаторов.
Поправьте, если не прав.
Самым сложным для меня оказалось осмыслить, что для возвращения ссылки на соединение из ВПП надо в этом ВПП создать индикатор, т.к. передать данные из ВПП можно только с помощью индикаторов.
Поправьте, если не прав.
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Задался целью получить имя алиаса для подключения к БД из ini-файла. Получилось, если указать абсолютный путь к ini-файлу. Но прописывать в приложение абсолютный путь - это неправильно. Да и не на каждом ПК можно задать любой путь. Как можно в LabVIEW задать относительный путь? Например, относительно главного ВП в проекте?
- Вложения
-
- 05_алиас из ini-файла.PNG (8.36 КБ) 4489 просмотров
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Советы по программированию на LabVIEW
В палитре File Constant:rsv писал(а):Как можно в LabVIEW задать относительный путь? Например, относительно главного ВП в проекте?
- 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/) более предпочтителен.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Советы по программированию на LabVIEW
При разработке ключи будут в labview.ini, в приложении (*.exe) в *.ini приложения.
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
IvanLis, спасибо. Поэксперементирую с обеими функциями.
Собственно, это и планировалось. Application Directory, скорее всего, и вернёт путь, где находится ехе.в приложении (*.exe) в *.ini приложения.
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Current VI's Path возвращает полный путь с именем файла, а Application Directory - только путь. При выполнении из ЕХЕ пути показывает одинаковые, а из среды в моём случае пути получились разные. С этим понятно.
Интересно другое. Для исполняемого файла LabVIEW создаёт свой ini-файл, совпадающий по имени с исполняемым файлом и записывает в него свои настройки. А если в проект добавить самописный ini-файл, то этот самописный файл полностью заменит файл, созданный LabVIEW и все настройки которые из него пропадают. Я не разбирался с этими настройками, но они, наверное, тоже важны для работы ЕХЕ? Может как-то можно сохранить свои настройки и настройки среды в один файл?
Интересно другое. Для исполняемого файла LabVIEW создаёт свой ini-файл, совпадающий по имени с исполняемым файлом и записывает в него свои настройки. А если в проект добавить самописный ini-файл, то этот самописный файл полностью заменит файл, созданный LabVIEW и все настройки которые из него пропадают. Я не разбирался с этими настройками, но они, наверное, тоже важны для работы ЕХЕ? Может как-то можно сохранить свои настройки и настройки среды в один файл?
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Советы по программированию на LabVIEW
Да можно, как раз недавно обсуждалось посмотрите эту темуrsv писал(а):Может как-то можно сохранить свои настройки и настройки среды в один файл?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Вот получился ВПП для инициализации приложения. Выполняет следующее:
1. Открывает ini-файл StandCommon.ini;
2. Считывает алиас из секции Database, ключ Alias;
3. Подключается к базе данных и возвращает ссылку на созданное соединение;
Может кому пригодится...
1. Открывает ini-файл StandCommon.ini;
2. Считывает алиас из секции Database, ключ Alias;
3. Подключается к базе данных и возвращает ссылку на созданное соединение;
Может кому пригодится...
- Вложения
-
- 06_Инициализация приложения.PNG (10.8 КБ) 4356 просмотров
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Стройте путь к файлу проще - не нужно Path конвертировать в String, а потом наоборот.
Мы делили апельсин - много наших полегло...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2074 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 344 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2433 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 391 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 848 Просмотры
-
Последнее сообщение dadreamer