УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Адресс параметра


Автор Сообщение
Сообщение создано: 15. 08. 2012 [16:37]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
Для нужд отладки (и логированния) работы скриптов JavaLikeCalc в обработке виджетов VCAEngine очень удобно использовать методы SYS.messDebug() и this.nodePath(), например: SYS.messDebug(this.nodePath(),"val="+val);
Сразу видно что где происходит.

Аналогично пытаюсь отлаживать скрипты JavaLikeCalc’а в параметрах контроллеров вычислителя JavaLikeCalc или логического уровня параметров. Но там не получается получить путь текущего исполняемого параметра через this.nodePath() — пишет "ошибка компиляции".
Хотя вроде из документации объект this должен присутсвоваавть:

Вкладка "Вычисления" контроллера(Рис. 3) содержит параметры и текст программы, непосредственно выполняемой контроллером. Модулем предусмотрен ряд специальных параметров, доступных в программе контроллера:

f_frq — Частота вычисления программы контроллера, только чтение.
f_start — Флаг первого выполнения программы контроллера, запуск, только чтение.
f_stop — Флаг последнего выполнения программы контроллера, останов, только чтение.
this — Объект данного контроллера.


Потому вопрос, как получить путь к обекту "самого себя" в тексте программы JavaLikeCalc?
Сообщение создано: 15. 08. 2012 [18:03]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"aleax" wrote:

Аналогично пытаюсь отлаживать скрипты JavaLikeCalc’а в параметрах контроллеров вычислителя JavaLikeCalc или логического уровня параметров. Но там не получается получить путь текущего исполняемого параметра через this.nodePath() — пишет "ошибка компиляции".
Хотя вроде из документации объект this должен присутсвоваавть:

А сам атрибут "this" присутствует?
В текущей версии, при создании функции самим контроллером или использовании пустой, он сам и создаёт этот и указанные атрибуты. У меня так точно.
Если что-то руками правили то создайте её и установите тип "Объект".

Learn, learn and learn better than work, work and work.
Сообщение создано: 15. 08. 2012 [22:28]
aleax
Alexey Bondarchuk
Создатель темы
Зарегистрирован(а) с: 27.01.2010
Сообщения: 73
"roman" wrote:

А сам атрибут "this" присутствует?
В текущей версии, при создании функции самим контроллером или использовании пустой, он сам и создаёт этот и указанные атрибуты. У меня так точно.
Если что-то руками правили то создайте её и установите тип "Объект".


Понял свою ошибку. Добавил вручную в IO объект this, и в функциях параметров логического уровня, и контроллеров JavaLikeCalc this.nodePath() стал корректно выводить путь:
JAVASCRIPT
0|/sub_DAQ/mod_JavaLikeCalc/cntr_test/ | line=0


Но та же функция при ручном исполнении её в библиотеке, или вызове её из другой функции, в лог пишет ошибку, и возвращает пустую строку:
JAVASCRIPT
0|/Machine/sub_DAQ/mod_JavaLikeCalc/lib_libSDKT/fnc_oldCupperMicroentry/ | Ошибка функции 'nodePath' или не достаточно параметров для неё. 
0|0 | line=0


Скада собрана из svn тега ветки 0.8, ревизия 1890.

[Сообщение редактировалось 1 раз(а), в последний раз 15.08.2012 в 22:29.]
Сообщение создано: 15. 08. 2012 [22:50]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"aleax" wrote:

Но та же функция при ручном исполнении её в библиотеке, или вызове её из другой функции, в лог пишет ошибку, и возвращает пустую строку:

Естественно.
Вы-же туда ничего не передали. Читайте внимательно описание про f_start, f_stop, f_frq и this. Там написано, что они обрабатываются в JavaLikeCalc, LogicLev, т.е они если видят эти атрибуты то инициируют их. За пределом контекста этих вычислителей там будет просто пустой объект и такие сообщения для него естественны.

Learn, learn and learn better than work, work and work.



7227