Использование VI Server Reference

Обсуждение, связанное с разработкой ПО верхнего уровня
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Использование VI Server Reference

Сообщение PaXXaN »

Доброе время суток!
Не подскажите, возможно ли каким либо образом "создавать" ссылки на индикаторы(VI Server Reference)?
Если есть несколько одинаковых индикаторов на панели и хотелось бы при выполнениии в цикле For Loop некоторой одинаковой процедуры в результате выполнения каждого "прохода" изменять свойства этих одинаковых индикаторов(их имена состоят их постоянной части и переменной, которая совпадает с номером итерации цикла).
Т.е. хотелось бы создать subVI или подпрограмму, входным параметром была бы
переменная типа число.

А может возможны другие способы?
Заранее спасибо!
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

Да, это возможно. Но надо учитывать, что ты не получаешь доступ ко всем свойствам контрола, так как не совсем известен тип контрола. Если покопать дальше, то в принципе можно разбирать контролы по типам в свитч кейзе.
Reference.PNG
Reference.PNG (5.25 КБ) 17072 просмотра
Вложения
Reference.vi
(10.31 КБ) 317 скачиваний
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

А о каких именно свойствах элементов идёт речь? Я недавно писал инересный проект, где мне надо было переводить элементы на другой язык. То есть менять например его caption и если это кнопка, то и boolean text. Дело в том что если элемент это кластер или сабпэнел например, то надо разбирать дальше на его подэлементы. Я сделал это сначала с помощью рекурсивного вызова виай, а потом уже не помню, но переделал по другому.
Если есть интерес могу дать посмотреть.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

eg писал(а):А о каких именно свойствах элементов идёт речь? Я недавно писал инересный проект, где мне надо было переводить элементы на другой язык. То есть менять например его caption и если это кнопка, то и boolean text. Дело в том что если элемент это кластер или сабпэнел например, то надо разбирать дальше на его подэлементы. Я сделал это сначала с помощью рекурсивного вызова виай, а потом уже не помню, но переделал по другому.
Если есть интерес могу дать посмотреть.
Попробую с помощью твоего приведённого примера, а вообще это всё те же Picture Ring. Мне хотелось бы менять их Val, Visible и положение на передней панеле, причём т.к. видимое пользователю их кол-во может меняться, нужно как то ссылаться на них быстро, а создавать с помощью Stacked Sequence Structure больше неохота.

Насчёт перевода на другой язык - это очень интересно. У нас планируется в будующем перевод на другой язык, и я уже предлагал сделать мультиязыковой интерфейс с помощью файлов-"локализаторов". Потому буду благодарен, если поделишься наработками!
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

Да, попробуй как в моём примере, должно получится.
Вот выкладываю наработки по переводу. Там немного разобраться надо какие виай где использоватъ.

Ты кстати тоже бы выложил что ты со своими картинками сделал. Может подскажу ещё что нибудь, да мне и самому тоже интересно.
Вложения
Perevod.zip
(655.31 КБ) 353 скачивания
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

eg писал(а):Да, попробуй как в моём примере, должно получится.
Вот выкладываю наработки по переводу. Там немного разобраться надо какие виай где использоватъ.

Ты кстати тоже бы выложил что ты со своими картинками сделал. Может подскажу ещё что нибудь, да мне и самому тоже интересно.
вот так щас реализовал:
Вложения
Статус Ячеек.jpg
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

Понятно. Обясни что именно ты хочешь сделать с помощью этого и в каком месте твоего главного виай ты это используешь.
Почему используешь именно Set Value Signalling?
А так вроде всё в порядке в твоей диаграмме.


Кстати картинки в формате PNG изображаются в форуме и вообще намного качественней чем ужатый JPG.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

eg писал(а):Понятно. Обясни что именно ты хочешь сделать с помощью этого и в каком месте твоего главного виай ты это используешь.
Почему используешь именно Set Value Signalling?
А так вроде всё в порядке в твоей диаграмме.


Кстати картинки в формате PNG изображаются в форуме и вообще намного качественней чем ужатый JPG.
Это будет часть основной процедуры программы - в цикле от 1 до 24 (т.е. до последнего элемента проверки) будет проделываться операция проверки каждого элемента. До цикла все ячейки скрыты. В начале цикла выводиться 1 состояние каждого следующей ячейки(Picture Ring) - это показ процесса проверки, затем идёт обмен с железкой и в результате получение результата проверки данного элемента, в зависимости от этого состояние Picture Ring меняется на 1 или 2 - это OK и Брак соответсвенно.

Про Set Value - это смена состояния Picture Ring. Что не так по твоему?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

Я только имел ввиду что Value Signalling кроме того что он изменяет значение ещё и генерирует ивент изменения. Если у тебя где то в программе будет ивент структура, то она может отреагировать неадекватно, если ты это не учёл. Используй вместо value signalling свойство value.
А на счёт остального понятно. Ты хочешь видимо упаковать этот кусочек в подприбор и наверное загружать названия из внешнего файла, например INI.
В моём транслитере я как раз использовал что то подобное, если ты туда в код заглядывал.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

eg писал(а):Я только имел ввиду что Value Signalling кроме того что он изменяет значение ещё и генерирует ивент изменения. Если у тебя где то в программе будет ивент структура, то она может отреагировать неадекватно, если ты это не учёл. Используй вместо value signalling свойство value.
А на счёт остального понятно. Ты хочешь видимо упаковать этот кусочек в подприбор и наверное загружать названия из внешнего файла, например INI.
В моём транслитере я как раз использовал что то подобное, если ты туда в код заглядывал.
Это я сделал потому так, что в начале обучения LabView у меня какие то глюки были с Value, а value sign прошло номана, потом не загонялся на эту тему. Про генерацию even'а не знал... исправлю!

Это уже подприбор. Названия меняться не будет, а из ini читаю их кол-во. Мне вот ещё сделать бы изменение положения на панели в зависимости он кол-ва - ширина окна постоянна, ширина всех "подложек"-изображений струкруры ячеек тоже одинакова, но т.к. их может быть 12,24, то соответственно может быть такие схемы расположения:
СТРОКхСтолбцов
4х3
4х6
При этом, при 24 эелементах расположение может меняться по вертикале.

Не подскажешь элегантные методы разположения ячеек Picture Ring на соответсв. места?
Я предполагаю менять Position в зависимости от типа подложки, но надо как то привязаться к этой подложке. Простой расчёт наверное: (отступ слева-отступ справа)/кол-во элементов в строке?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

То есть если я правильно всё понял у тебя есть два вида подложек-бэкграундов. Это те которые будут подкладываться под все кратинки. Если например выбран первый тип, то у тебя количество рингов 4Х3. Если второй тип, то их количество 4Х6.
Я не очень понял в какой момент и зачем ты хочешь двигать картинки по вертикали. Поясни.
А вот двигать по горизонтали, понятно, ты видимо хочешь чтобы картинки были посередине окна и бэкграунда.
Сначала напиши правильно ли я всё понял. А как это делать покажу потом. Если можно выложи скрины обоих вариантов лицевой панели с 4Х3 и 4Х6, чтобы понятнее было.

Кстати ещё возникает вопрос чем тебя не устрол эррэй из пикчер рингов?
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

eg писал(а):То есть если я правильно всё понял у тебя есть два вида подложек-бэкграундов. Это те которые будут подкладываться под все кратинки. Если например выбран первый тип, то у тебя количество рингов 4Х3. Если второй тип, то их количество 4Х6.
Я не очень понял в какой момент и зачем ты хочешь двигать картинки по вертикали. Поясни.
А вот двигать по горизонтали, понятно, ты видимо хочешь чтобы картинки были посередине окна и бэкграунда.
Сначала напиши правильно ли я всё понял. А как это делать покажу потом. Если можно выложи скрины обоих вариантов лицевой панели с 4Х3 и 4Х6, чтобы понятнее было.

Кстати ещё возникает вопрос чем тебя не устрол эррэй из пикчер рингов?
Если совсем точно, то их не 2, а 5:

Менять нужно в зависимости от значения combo box'а не только подложку, но и кол-во "статусов", при этом сдвигая на нужное место.

А массив picture ring не устроил - вроде уже сделал(переделывать не охота), да и по мне выглядит не совсем так, как требуется
Вложения
1.png
1.png (21.79 КБ) 16964 просмотра
2.png
2.png (21.05 КБ) 16960 просмотров
3.png
3.png (21.49 КБ) 16969 просмотров
4.png
4.png (21.99 КБ) 16972 просмотра
5.png
5.png (12.68 КБ) 16970 просмотров
Последний раз редактировалось PaXXaN 07 фев 2008, 14:52, всего редактировалось 1 раз.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

А это передняя панель:
Вложения
Экран.png
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Использование VI Server Reference

Сообщение Eugen Graf »

:dntknw: опять возник вопрос, что то я не вижу отличий между картинкой 1 и 4, и между 2 и 3.

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

Потом определить левый верхний угол бэкграунда началом координат. Т.е. это будет наша нулевая координата и будет являтся offset-ом для всех координат картинок. Для этого можно опросить позицию бэкграунда и в последующем добавлять эти координаты ко всем координатам всех картинок.

Ну так вот. Теперь определим середину одной картинки, с координатой середины считать будет наверное легче. Для этого опрашиваем размер картинки и делим высоту и ширину на два.
Аватара пользователя
PaXXaN
beginner
beginner
Сообщения: 32
Зарегистрирован: 19 янв 2008, 10:11
Версия LabVIEW: 8.5
Контактная информация:

Re: Использование VI Server Reference

Сообщение PaXXaN »

eg писал(а)::dntknw: опять возник вопрос, что то я не вижу отличий между картинкой 1 и 4, и между 2 и 3.

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

Потом определить левый верхний угол бэкграунда началом координат. Т.е. это будет наша нулевая координата и будет являтся offset-ом для всех координат картинок. Для этого можно опросить позицию бэкграунда и в последующем добавлять эти координаты ко всем координатам всех картинок.

Ну так вот. Теперь определим середину одной картинки, с координатой середины считать будет наверное легче. Для этого опрашиваем размер картинки и делим высоту и ширину на два.
Отличия есть - немного движутся ряды и совсем чудок столбцы, но кол-во элементов у них неизменяется.

Это я сделал - в начале всё скрыто, и по событию выбора типа я показываю подложку. Вот тут то и надо сдвинуть ячейки на нужные места.
Затем - выполнение проверки, в ходе которой происходит показ ячеек(Picture Ring) и замена в них отображаемого изображения. После этого при нажатии "продолжить" опять всё скрывается и можно снова выбрать тип/начать новую проверку. Элементы при этом на нужных местах уже.
Что имеешь в виду, говоря "закрыть референсы" в деинициализации?

Т.е. читаем Position->Left?
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»