Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по скриптам в Jung Facility-Pilot 2.0
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем > EIB/KNX
djgisma
Вопросы по скриптингу (на VisualBasic) к Jung Facility Pilot:

1. Как считывать значение переменных? Желательно пример скрипта.

Пример отрывка моего скрипта:

Sub ShowItem(PVItem As DVisProcessItem)
If PVItem.Name = "ФОК_0.2.2" Then
Debug.Print "Найдено: ФОК_0.2.2"
MsgBox "| Value= " & PVItem.Value & " | Type= " & PVItem.VarType & " | Read: " & PVItem.IsReadable & " | Write:" & PVItem.IsWriteable
End If
End Sub

Получаю тип переменной, ответ что читаема, ответ что изменяемая, но ЗНАЧЕНИЕ не получаю (всегда только 0 !!!) В чем проблема?

2. Как изменять значения переменных? Желательно пример скрипта.
makrider
Ваш скрипт работает, я проверил. Я получаю правильное значение.
Остается только предположить, что значение Вашей переменной действительно равно 0

Изменить значение переменной можно так:

PVItem.WriteBool(True/False)
PVItem.WriteInt(new_value)
PVItem.WriteDouble(new_value)

Вызываемая функция зависит от типа переменной.
Все функции подробно описаны в документе EsfVisScript.PDF, который входит в комплект
Facility Pilot (C:\Program Files\JUNG\Facility-Pilot\Help)Нажмите для просмотра прикрепленного файла
djgisma
Интересная вещь выяснилась - PVItem.Value выдает правильные значения для переменных имеющие тип "Boolean", а для 3-Bit Controlled, 2-Octet Float Value и т.д. значение только 0.
В описании сказано, что переменная отвечающая за PVItem.Value имеет тип Variant.. Выходит что не так. Вы не сталкивались с такой проблемой?
makrider
Ваша функция ShowItem(PVItem As DVisProcessItem) работает правильно для любых переменных.
Сравните информацию о переменных из EIB editor:

Нажмите для просмотра прикрепленного файла

С результатом работы функции ShowItem

Нажмите для просмотра прикрепленного файла

Видно, что переменная "Group 00/0/014" имеет тип 2-Octet Float Value.
Для переменной типа 3-Bit Controlled также всё работает.

Фрагмент скрипта для вызова Вашей функции:

If (ProcessItem.Name = "Group 00/0/014") Then ShowItem(ProcessItem)

Тут нет никаких особенностей, просто Вы что-то неправильно настроили.

У меня есть другой интересный вопрос по скриптам Facility-Pilot для всех участников форума:
Как можно вывести на экран из скрипта autorun.visscript текстовую строку?
Похоже авторы программы не предусмотрели подобной функции.



Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.