Автор |
Сообщение |
Сообщение создано: 24. 08. 2015 [19:06]
|
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
|
Создаю динамический текстовый виджет и его связь с помощью this.wdgAdd(wdgNm, ...) и this[wdgNm].linkSet("arg0val", "prm:..."), но не могу сделать активным признак Input Link аттрибута arg0val. Подскажите, как это выполнить?
[Сообщение редактировалось 2 раз(а), в последний раз 24.08.2015 в 19:08.]
|
Сообщение создано: 25. 08. 2015 [08:08]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"chevents" wrote:
Создаю динамический текстовый виджет и его связь с помощью this.wdgAdd(wdgNm, ...) и this[wdgNm].linkSet("arg0val", "prm:..."), но не могу сделать активным признак Input Link аттрибута arg0val. Подскажите, как это выполнить?
Указанные механизмы предусматривались только для добавления и установки связей готовых виджетов, а не ещё и разработку их там.
Следовательно готовьте библиотеку с нужными элементами и конфигурацией, а затем используйте их в сеансе.
Хотя потенциально в сеансе, через интерфейс управления, можно сделать и разработку, если доступ к редактированию атрибутов виджета открыть.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 09. 09. 2015 [06:46]
|
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
|
А пример кода можно привести?
|
Сообщение создано: 09. 09. 2015 [21:46]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"chevents" wrote:
А пример кода можно привести?
http://wiki.oscada.org/Doc/VCAEngine#h806-1
http://oscada.org/ru/forum/posts/proekt/dinamicheskoe_dobavlenie_stranicy_v_logicheskii_kontei/
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 17. 09. 2015 [09:00]
|
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
|
Спасибо за ответы.
В моем проекте около 800 виджетов для описаний различных параметров и их значений.
При таком количестве виджетов проект явно тормозит - замедляется реакция на события клавиатуры и мыши.
Что-то возможно сделать, чтобы не было торможений?
|
Сообщение создано: 17. 09. 2015 [10:20]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"chevents" wrote:
В моем проекте около 800 виджетов для описаний различных параметров и их значений.
При таком количестве виджетов проект явно тормозит - замедляется реакция на события клавиатуры и мыши.
Что-то возможно сделать, чтобы не было торможений?
Не вызывать ресурсоёмких операций в каждом цикле интерфейса визуализации, очевидно.
У меня, например, последний проект с суммарным количеством активных виджетов > 1000 (на 7 исполняемых в фоне объектах сигнализации) не тормозит на периодичности проекта 100мс и в среднем использует 35мс, на "зелёных" машинах (50%, 1.6ГГц).
http://wiki.oscada.org/Doc/QuickStart#h988-28
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 17. 09. 2015 [14:33]
|
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
|
Виджеты создаю при первом проходе.
Динамически меняю только значения параметров.
Одни и те же массивы, правда, создаются всякий раз, как я понимаю, они удаляются автоматически.
Ручного способа их удаления я просто не знаю.
|
Сообщение создано: 17. 09. 2015 [15:01]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"chevents" wrote:
Виджеты создаю при первом проходе.
Динамически меняю только значения параметров.
Одни и те же массивы, правда, создаются всякий раз, как я понимаю, они удаляются автоматически.
Ну и зачем создавать массивы каждый раз, если они нужны всегда?
В рабочей версии не удаляются, поскольку переменные хранятся в контексте вычисления, который в свою очередь не удаляется на каждой итерации.
"chevents" wrote:
Ручного способа их удаления я просто не знаю.
Зачем?
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 17. 09. 2015 [18:36]
|
chevents
Сергей К
Создатель темы
Зарегистрирован(а) с: 12.01.2015
Сообщения: 6
|
Чтобы удалять динамически выделяемую память, создаваемую как new Array.
С тормозами проблема остается при коде, сведенном к минимуму. Не пойму, как ее решить.
|
Сообщение создано: 17. 09. 2015 [19:11]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"chevents" wrote:
Чтобы удалять динамически выделяемую память, создаваемую как new Array.
При циклическом программировании ноль смысла удалять то, что создастся в следующем, только ресурсы процессора ест, и приводит к тормозам.
А вообще, достаточно скаляр присвоить переменной с массивом и любым объектом вообще.
"chevents" wrote:
С тормозами проблема остается при коде, сведенном к минимуму. Не пойму, как ее решить.
Изучайте нагрузку: http://wiki.oscada.org/Doc/OpisanieProgrammy/part4/files?get=sys_tasks.png
Свойства сеанса, который тормозит: http://wiki.oscada.org/Doc/VCAEngine/files?get=VCAeng_pg_ses.png
Протокол ошибок по сеансу: http://wiki.oscada.org/Doc/Vision/files?get=vis_wlbpg_diag.png
P.S. В последних ревизиях должно быть более оптимально.
Learn, learn and learn better than work, work and work.
|