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() розширено записом одного значення до архіватору архіву.