From OpenSCADAWiki
< Documents | Release 0.8.0
Это обновление релиза 0.8 LTS исправляет около 30 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.
API
!!!!:Изменения:
- SYS.*: Флаг TCfg::TransltText перенесен в TFld::TransltText а также использован вместо TFld::NoStrTransl, который удалён.
- Транспорты: Замок общего доступа к выходному транспорту изменён на мютекс и аргумент "noRes" удалён из функции messIO() для предотвращения неожиданных выходов из критической секции запроса. Объект блокирования ресурса nRes и его функция nodeRes() удалены из объекта входного транспорта.
Дополнения:
- SYS:
- strEncode() расширена режимом "ToLower" для преобразования в нижний регистр.
- Параметры командной строки дополнены предзагрузкой и прямым доступом-модификацией с помощью новой функции cmdOpt(), полное переключение из getCmdOpt() на cmdOpt().
- Бинарное декодирование в strDecode() расширено значением аргумента "<text>" для формирования текстовой части справа.
- XMLNodeObj: Дополнено функцией пользовательского API getElementsBy() — получения перечня узлов XML по имени тега или значению атрибута.
- TArrayObj: arSet() адаптирован для добавления в конец массива по отрицательному индексу.
- DAQ.{AMRDevs,ICP_DAS},Special.FLibSYS: Собственная имплементация функции atof() и strtod() в функции TSYS::str2real() и её короткой ссылке s2r() и для понимания обоих символов отделения дробной части реального числа "." и ",". DAQ.OPC_UA.libOPC_UA: Функция TSYS::str2real() помещена и использована в отдельной библиотеке. Отключена сейчас!
- Транспорты: Добавлен общий протокол ВВ по входным и выходным транспортам, в ядро и все транспортные модули.
- UI.VCAEngine: Дополнен функциями пользователя в пространстве сеанса: reqTm(), reqUser(), userActTm().
SYS
- XMLNode
- Исправление на предмет лишнего резервирования размера строки в кодировании сериализации, что приводило к значительной деградации её производительности, особенно на больших деревьях. ** Это должно значительно повысить производительность сетевого взаимодействия по XML.
Унифицирована и исправлена сериализацию в XHTML на предмет: предотвращения самозавершения тегов для "script", "div; предотвращения кодирования символов "'" и '"' в тексте (также для XML); кодирования UTF8 символа 0xA0 в " ".
- TRegExp исправлен в функции match() на предмет предотвращения зависания и падения.
- Версия библиотеки ядра установлена в 2:6:0. Модульная версия подсистемы "Транспорты" поднята до 10.
- TConfig: Предотвращение рекурсии входа в cfgChange() по флагу mInCfgCh.
- XMLNodeObj,XMLNode: Удаление дочерних узлов осуществлено с конца, для увеличения скорости этой операции.
БД
- Добавлено конфигурабильное ограничение отображения содержимого таблиц, типично это 100 строк.
- {SQLite,MySQL,PostgreSQL,FireBird}: Добавлено ограничение предзагрузки fieldSeek() в 100 записей для предотвращения продолжительного непрерывного подвисания.
Сбор данных
- {DCON,ModBus,Siemens}: Объекты мютекса "enRes" и "reqRes" установлены в рекурсивные, от Алексея Бондарчука.
- SoundCard: Значительно пересмотрен и исправлен для работы с реальным и виртуальным, вроде PulseAudio, оборудованием и проверен на частотах выборки до 192000.
Архивы
- Архиваторы значений и сообщений дополнены измерением максимального времени обработки.
- FSArch: Предотвращена многоразовая упаковка-распаковка файлов. Добавлена проверка и очистка от нулевых архивных файлов. Буферы архивации сообщений и информационных файлов значений сделаны безопаснее на предмет возможного чтения случайных данных.
- DBArch: Дополнен пропуском ошибочных архивов значений.
Транспорты
- {SSL,Sockets}.out: Функциональный замок ресурсов транспортов объединён с reqRes().
- Входные транспорты дополнены измерением текущего и максимального времени запроса к протоколу, в режиме "Отладка (0)". Выходные транспорты дополнены измерением времени отклика, в режиме "Отладка (0)".
Протоколы
- HTTP: Расширен перечнем пользователей, разрешённых к аутентификации. mNoFull переименован в mNotFull.
Интерфейс Пользователя
- {QTCfg,Vision}: Добавлено сохранение и восстановление размера главного окна и главных диалогов (разработка Vision) и свойств разделителей.
- QTCfg: Исправлены вертикально-масштабируемые виджеты "Таблицы" и "Списки" путём их помещения в конец стека виджетов. Предотвращена высокая нагрузка на ожидании ответа диалога прогресса.
- VCAEngine: Обработка различных виджетов с большой периодичностью (в главной задаче сеанса) адаптирована к исполнению в различных фазах чем нагружая основную задачу более равномерно и в целом меньше. Добавлен контроль действий пользователя по временем действия.
- QTStarter: Расширен закрытием (окон) и запуском в системном трее. Значительно пересмотрен на предмет полного создания интерфейса в цикле сообщений Qt exec() и функции WinControl перенесены в StApp, потомка QApplication. Собственное меню QTStarter, с перечнем модулей Qt, унифицировано на предмет статического хранилища действий для расширения меню и панелей инструментов окон Qt модулей и иконки системного трея, помещён также в свойство "menuStarterAddr" главного объекта приложения.
- Vision:
- Добавлена подстройка размера окна под размер главной страницы после возврата с максимизации или полного экрана и запуска в оригинальном размере.
- Создание меню режима исполнения изменено в полный режим, т.е. полное формирование при необходимости и полная очистка при её отсутствии; для предотвращения отображения меню в неактивном режиме в некоторых окружениях вроде Maemo и Unity.
- Добавлен контроль за пользователем режима исполнения с помощью специфического для визуализатора атрибута "userSetVis" главной страницы, расширение виджета статуса пользователя и диалога выбора.
Special
- FLibSYS: VArch::set() расширена записью одного значения в архиватор архива.