Written on: 15. 08. 2012 [16:37]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 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?
|
Written on: 15. 08. 2012 [18:03]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"aleax" wrote:
Аналогично пытаюсь отлаживать скрипты JavaLikeCalc’а в параметрах контроллеров вычислителя JavaLikeCalc или логического уровня параметров. Но там не получается получить путь текущего исполняемого параметра через this.nodePath() — пишет "ошибка компиляции".
Хотя вроде из документации объект this должен присутсвоваавть:
А сам атрибут "this" присутствует?
В текущей версии, при создании функции самим контроллером или использовании пустой, он сам и создаёт этот и указанные атрибуты. У меня так точно.
Если что-то руками правили то создайте её и установите тип "Объект".
Learn, learn and learn better than work, work and work.
|
Written on: 15. 08. 2012 [22:28]
|
aleax
Alexey Bondarchuk
Topic creator
registered since: 27.01.2010
Posts: 73
|
"roman" wrote:
А сам атрибут "this" присутствует?
В текущей версии, при создании функции самим контроллером или использовании пустой, он сам и создаёт этот и указанные атрибуты. У меня так точно.
Если что-то руками правили то создайте её и установите тип "Объект".
Понял свою ошибку. Добавил вручную в IO объект this, и в функциях параметров логического уровня, и контроллеров JavaLikeCalc this.nodePath() стал корректно выводить путь:
0|/sub_DAQ/mod_JavaLikeCalc/cntr_test/ | line=0
Но та же функция при ручном исполнении её в библиотеке, или вызове её из другой функции, в лог пишет ошибку, и возвращает пустую строку:
0|/Machine/sub_DAQ/mod_JavaLikeCalc/lib_libSDKT/fnc_oldCupperMicroentry/ | Ошибка функции 'nodePath' или не достаточно параметров для неё.
0|0 | line=0
Скада собрана из svn тега ветки 0.8, ревизия 1890.
[This article was edited 1 times, at last 15.08.2012 at 22:29.]
|
Written on: 15. 08. 2012 [22:50]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"aleax" wrote:
Но та же функция при ручном исполнении её в библиотеке, или вызове её из другой функции, в лог пишет ошибку, и возвращает пустую строку:
Естественно.
Вы-же туда ничего не передали. Читайте внимательно описание про f_start, f_stop, f_frq и this. Там написано, что они обрабатываются в JavaLikeCalc, LogicLev, т.е они если видят эти атрибуты то инициируют их. За пределом контекста этих вычислителей там будет просто пустой объект и такие сообщения для него естественны.
Learn, learn and learn better than work, work and work.
|