Страница 2 из 2

Re: Хранение данных о конфигурации программы

Добавлено: 04 фев 2010, 18:15
FireFly
На самом деле я считаю что сделать автоматическое заполнение индикаторов можно. Но очень сложно. Тебе нужно взять reference твоей основной VI, затем из неё вытащить массив reference всех индикаторов (при этом в массив они объединиться могут только как однотипные reference на Gobj, кажется). Помимо этого нужно будет поискать индикаторы в Tab Control, в кластерах, и так далее на всю глубину возможную (вроде есть пример стандартный который это делает).
Затем заводишь этот массив reference в цикл и начинаешь анализировать имена индикаторов и их типы. Если имя совпало с текущим именем из конфига - вводишь Reference и Data в Case (селектор которого - значения типа). Дальше записываешь твои данные из конфига в Property Node "Value" твоего индикатора, предварительно подогнав все типы под нужные индивидуально для каждого кейса. Кейсов нужно будет сделать столько, сколько у тебя типов индикаторов.

Re: Хранение данных о конфигурации программы

Добавлено: 04 фев 2010, 18:25
FireFly
Попробуй это. Я написал, но не проверял )))

Re: Хранение данных о конфигурации программы

Добавлено: 04 фев 2010, 18:31
Eugen Graf
FireFly писал(а):На самом деле я считаю что сделать автоматическое заполнение индикаторов можно. Но очень сложно. Тебе нужно взять reference твоей основной VI, затем из неё вытащить массив reference всех индикаторов (при этом в массив они объединиться могут только как однотипные reference на Gobj, кажется). Помимо этого нужно будет поискать индикаторы в Tab Control, в кластерах, и так далее на всю глубину возможную (вроде есть пример стандартный который это делает).
Затем заводишь этот массив reference в цикл и начинаешь анализировать имена индикаторов и их типы. Если имя совпало с текущим именем из конфига - вводишь Reference и Data в Case селектор которого значения типа. Дальше записываешь твои данные из конфига в Property Node "Value" твоего индикатора, предварительно подогнав все типы под нужные индивидуально для каждого кейса. Кейсов нужно будет сделать столько, сколько у тебя типов индикаторов.
То, что здесь описано я уже делал. Нужно поискать по форуму примерно о многоязычном интерфейсе.

Re: Хранение данных о конфигурации программы

Добавлено: 04 фев 2010, 21:12
Михаил23
FireFly писал(а):Попробуй это. Я написал, но не проверял )))
В общем смотри - тебе всё равно из этой SubVI тащить кучу проводов до каждого индикатора. У каждого индикатора есть имя которое ты знаешь, и его тип, так что Case со входом "имя" тебе всё равно придется заполнить самому соответствиями "тип". Автоматически это сделать не получится.Вложения
Read data file.vi
(17 ) Скачиваний: 2
А можно все примеры сохранить в LV8.6

Re: Хранение данных о конфигурации программы

Добавлено: 05 фев 2010, 00:55
mzu2006
Тема очень интересная. Выскажусь:
FireFly писал(а):Database тулкит.
Это хорошо, но не всегда хочется ставить ДБ сервер одновременно с прогой + привязывать свою прогу к какому-то виду БД.

xml, и стандартный файл конфигурации с секциями - неплохо, но нужно многое писать вручную (как в приведённом примере). Главное достоинство, что так записанную конфигурацию можно потом править в любом текстовом редакторе.

А хотите дёшево и сердито? В OpenG есть GetAllControlValues {Variant}. На выходе: массив кластеров. Пишем его прямо в бинарный файл.
При чтении читаем по одному кластеру из этого бинарного файла и используем OpenG: SetControlValue {Variant}. И пусть :labview:/OpenG сами разбираются с преобразованиями типов в/из variant, сериализацией кластера из stirng и variant ...

Re: Хранение данных о конфигурации программы

Добавлено: 05 фев 2010, 07:54
FireFly
mzu2006 писал(а):Тема очень интересная. Выскажусь:
FireFly писал(а):Database тулкит.
Это хорошо, но не всегда хочется ставить ДБ сервер одновременно с прогой + привязывать свою прогу к какому-то виду БД.
Я не предлагал подключать базу данных :) Я просто привел пример VI у которой тип выхода зависит от входа.
Михаил23 писал(а):
Шарх писал(а):
eg писал(а):Отвечу так: нужно заранее знать тип данных, иначе что с этими данными делать?
В ходе работы программы такое изменение VI если не невозможно (Scripting вроде может помочь), то наверняка бесполезно. А вот в ходе написания блок-диаграммы такие VI очень даже удобны. Например DB Tools Fetch Element Data VI так работает. Какой тип подашь на вход-такой и получишь на выходе. Прям коннектор меняется.
А где можно найти DB Tools Fetch Element Data VI ?
FireFly писал(а):Database тулкит.
Вот :)

Приложил те же файлы, но для 8.6. Ещё раз повторюсь, что не уверен что это работает :). Но как тема для размышлений.