Попытка "адаптации" OpenSCADA к QNX 6.5
Автор |
Повідомлення |
Повідомлення створено: 14. 06. 2017 [08:15]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"roman" wrote:
К Qt значит вопросы, поскольку на Qt 4.8 и 5.3 ничего подобного нет.
Но поднял остановку таймеров OpenSCADA в обработчик закрытия окна, на пробу.
А может и это:
2017-06-09 Roman (stable)
...
- !!!!:FIX:UI.QTStarter: Two modes of execution Qt were added, first is old one into different thread (by default) and second is new one into main thread (by the configure option -enable-QtMainThrd).
2017-06-02 Roman (stable)
...
- !!!:FIX:SYS.ModSchedule: Modules closing at exit set to all the modules closing firstly and next all the module's libraries unlinking. For fix like to WebKit crashes at exit.
!!!: Modules scanning procedure expanded by the module's name template into the end of the path, mostly for Android where all libraries place into one folder.
Function ScanDir() and CheckFile() renamed to dirScan() and fileCheck() respectively.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 27. 06. 2017 [10:31]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"roman" wrote:
"roman" wrote:
К Qt значит вопросы, поскольку на Qt 4.8 и 5.3 ничего подобного нет.
Но поднял остановку таймеров OpenSCADA в обработчик закрытия окна, на пробу.
А может и это:
2017-06-09 Roman (stable)
...
- !!!!:FIX:UI.QTStarter: Two modes of execution Qt were added, first is old one into different thread (by default) and second is new one into main thread (by the configure option -enable-QtMainThrd).
2017-06-02 Roman (stable)
...
- !!!:FIX:SYS.ModSchedule: Modules closing at exit set to all the modules closing firstly and next all the module's libraries unlinking. For fix like to WebKit crashes at exit.
!!!: Modules scanning procedure expanded by the module's name template into the end of the path, mostly for Android where all libraries place into one folder.
Function ScanDir() and CheckFile() renamed to dirScan() and fileCheck() respectively.
На Debian 9 с Qt5.7 сборка и запус в главном потоке убирает сообщение про останов таймера не из главного потока и в целом, из под KDE5, он там чудно работает с такой-же системной темой.
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 15. 05. 2018 [10:20]
|
mr_dsv
Сергій Дорошка
Contributor
Автор теми
Зареєстрован(а) с: 31.10.2012
Повідомлення: 31
|
Опять пробую "адаптировать" OpenSCADA к QNX 6.5
В этот раз работаю с версиями начиная с 0.9+r2538
С рядом оговорок и "особенностей" проект AGLKS работает.
Если есть интерес к теме, можно поделиться моими "мыслями".
Есть и вопрос. При открытии "Паспорта" аналогового измерения в QT интерфейсе имеем "битую" локализацию.
В WEB интерфейсе все нормально. Кроме того в QT интерфейсе "Паспорт" открывается только один раз в QT 4.8.7 , в QT 5.5.1
паспорт открывается повторно, но локализация также "битая". Речь идет о QT "портах" для QNX 6.5 под Photon от SWD.
Очень может быть что данные проблемы (локализация и однократное открытие) это "болезни роста" данных портов.
Может "ткнете" где в Vision идет отрисовка виджетов типа "Паспорт", для "грамотного" описания проблемы в SWD.
Вкладений файл
|
Повідомлення створено: 15. 05. 2018 [15:30]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"mr_dsv" wrote:
Опять пробую "адаптировать" OpenSCADA к QNX 6.5
В этот раз работаю с версиями начиная с 0.9+r2538
Даже с версиями! Тут и последней достаточно. :)
"mr_dsv" wrote:
С рядом оговорок и "особенностей" проект AGLKS работает.
Чудно, может тогда стоит эту работу как-то оформить, как я делал для Android, чтобы понимать текущий статус адаптации?!
"mr_dsv" wrote:
Если есть интерес к теме, можно поделиться моими "мыслями".
Конечно, особенно если их фиксировать на странице под-проекта адаптации.
"mr_dsv" wrote:
Есть и вопрос. При открытии "Паспорта" аналогового измерения в QT интерфейсе имеем "битую" локализацию.
Да, похоже на недостаточную локализацию, а точнее — поддержку кодировки UTF-8 в библиотечных функциях типа isspace(), где она UTF-8 не понимает и считает ряд его символов за пробел, как результат обрезая строку сначала и конца.
Сталкивался с подобным на Android более или равно 5, где в BioniC таки добавили подобие поддержки локалей, но из-за того, что это таки подобие, понимать UTF-8 он начинает на фиксированной локали "C.UTF-8" для LC_CTYPE.
"mr_dsv" wrote:
Кроме того в QT интерфейсе "Паспорт" открывается только один раз в QT 4.8.7 , в QT 5.5.1
паспорт открывается повторно, но локализация также "битая".
Думаю про Qt4, на новых адаптациях, можно уже забыть, а про локаль смотрите выше.
"mr_dsv" wrote:
Может "ткнете" где в Vision идет отрисовка виджетов типа "Паспорт", для "грамотного" описания проблемы в SWD.
Сначала давайте разберёмся с локалью, т.е. какую и как Вы туда ставите. Потом можно попробовать решение для Android, строка 466 файла tmess.cpp. Ну и, как крайний случай, это замена isspace() своей реализацией, что плохо, поскольку такие проблему будут и в аргументах "va_list", что менять это по сути системную библиотеку выкидывать.
P.S. Если оформить эти результаты как подпроект, то смотри и поддержка QNX окажется в 0.9 LTS, пока я закончу с документацией и буду её выпускать. :)
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 16. 05. 2018 [10:42]
|
mr_dsv
Сергій Дорошка
Contributor
Автор теми
Зареєстрован(а) с: 31.10.2012
Повідомлення: 31
|
"roman" wrote:
Думаю про Qt4, на новых адаптациях, можно уже забыть
На данный момент порт для QT 4.8.7 является основным в SWD и обновляется гораздо чаще, да и работает на нем OpenSCADA по стабильнее.
"SWD" wrote:
В настоящий момент основной версией мы считаем Qt 4.8.7, все файлы последней сборки расположены в корневом каталоге FTP. Другие сборки и версии размещены в каталогах вида qt486, qt551 и т.д.
Qt для QNX и КПДА
"roman" wrote:
Сначала давайте разберёмся с локалью, т.е. какую и как Вы туда ставите.
Пробовал и в .profile LC_CTYPE=C.UTF-8 (а также ru_RU.UTF-8 и C-TRADITIONAL, последнее "подчерпнул" из обсужений в интернете, посвященных выводу "локальных" символов в QNX-е).
После данные значения присваивал и LC_ALL и { LC_ADDRESS LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_PAPER LC_TIME LC_TELEPHONE }
Пробовал и в tmess.cpp править(добавлять):
#if defined(__QNXNTO__)
setlocale( LC_CTYPE, "C-TRADITIONAL"); //C.UTF-8 //ru_RU.UTF-8
#endif
Результат пока как на приведенном ранее скриншоте.
Язык в .profile установлен так:
export LANG=ru_RU.UTF-8
export LANGUAGE=ru_RU.UTF-8
"roman" wrote:
Конечно, особенно если их фиксировать на странице под-проекта адаптации.
"mr_dsv" wrote:
Если есть интерес к теме, можно поделиться моими "мыслями".
Поступлю как проще для себя. Соберу "мысли", т.е. измененные файлы с краткими пояснениями и в виде архива здесь и выложу...
|
Повідомлення створено: 16. 05. 2018 [14:47]
|
mr_dsv
Сергій Дорошка
Contributor
Автор теми
Зареєстрован(а) с: 31.10.2012
Повідомлення: 31
|
Ну вот как обещал...
В read.me немного "мыслей"
Вкладений файл
|
Повідомлення створено: 17. 05. 2018 [11:10]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"mr_dsv" wrote:
На данный момент порт для QT 4.8.7 является основным в SWD и обновляется гораздо чаще, да и работает на нем OpenSCADA по стабильнее.
Странно такое слышать про Qt4, как "основной" и "обновляется". Поскольку, формально, Qt4 уже не поддерживается и, например, в Debian идут подвижки на предмет его исключения из репозитория, хотя причина по мне странная — старый-уязвимый SSL, которым многие, я думаю, и не пользуются там.
"mr_dsv" wrote:
Результат пока как на приведенном ранее скриншоте.
Ну да, это естественно, если учесть, как Вы там хакали вокруг локали.
По факту, UTF-8 там не поддерживается вообще или поддерживается очень поверхностно.
Собственно, мне не понятно зачем вообще ставить локаль с UTF-8 и потом включать хаки с перекодированием в CP1251, если можно прямо поставить локаль в такой кодировке!? Тем более, OpenSCADA поддерживает однобайтные кодировки.
P.S. Гипотезу про кривую поддержку UTF-8 в системных функциях, в данной ситуации с паспортом, можете проверить, добавив, в поле описания открываемого в паспорте параметра, ASCII символы, что экраном уже почти подтверждается, т.е. в строку "Регулятор давления на входе КС." добавьте первый символ, например, ':' и это сообщение будет отображаться нормально.
"roman" wrote:
Поступлю как проще для себя. Соберу "мысли", т.е. измененные файлы с краткими пояснениями и в виде архива здесь и выложу...
Тогда, проще для себя, я буду предметно это изучать только после выпуска 0.9 LTS.
Однако, после поверхностного обзора высланного архива отмечу:
- "Makefile.in - добавлена опция компилятора -N 1024K - стек для главного исполняемого модуля"
> все специфические опции компилятора можно передать переменными окружения
- В связи с ограниченим в эмуляторе терминала pterm под Photon на отображение UTF-8 была добавлена перекодировка для вывода справки и сообщений в консоль. Типа: (в файлах где есть вывод справки)
> если UTF-8 нет даже в системном эмуляторе терминала то не нужно тянуть в OpenSCADA прямую перекодировку в CP1251, а просто нужно ставить системную однобайтовую.
- "Компилятор не смог найти "подходящую" функцию abs(), пришлось "подсказать"."
> Ищите, должна быть, поскольку это POSIX, которому QNX типа полностью совместима.
- Пришлось самому "выдрать" из glibc и собрать библиотеку libcrypt.so с crypt_r.
> Круто, я для Android этого даже не делал. :)
> Собственно, зачем? Там вроде есть "crypt()", который сейчас проверяется и используется. А можно и вообще без crypt(), как сейчас на Android.
- Пришлось также сделать "заглушки" для beep, espeak, play, ru_tts, sox, text2wave - нет такого в QNX, как и утилит X Windows.
> Зачем? Скрипт вроде проверяет их присутствие и только тогда использует?
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 18. 05. 2018 [10:16]
|
mr_dsv
Сергій Дорошка
Contributor
Автор теми
Зареєстрован(а) с: 31.10.2012
Повідомлення: 31
|
"roman" wrote:
P.S. Гипотезу про кривую поддержку UTF-8 в системных функциях, в данной ситуации с паспортом, можете проверить, добавив, в поле описания открываемого в паспорте параметра, ASCII символы, что экраном уже почти подтверждается, т.е. в строку "Регулятор давления на входе КС." добавьте первый символ, например, ':' и это сообщение будет отображаться нормально.
Гипотеза полностью подтвердилась... Печалька однако.
"roman" wrote:
Собственно, мне не понятно зачем вообще ставить локаль с UTF-8 и потом включать хаки с перекодированием в CP1251, если можно прямо поставить локаль в такой кодировке!? Тем более, OpenSCADA поддерживает однобайтные кодировки.
Эмулятор терминала pterm для Photon QNX 6.5 скажем так - "вещь в себе".
В нем есть собственная трансляция символов для различных кодировок. Если её настроить и использовать "фокус" с перекодировкой при выводе сообщений в stdout в OpenSCADA, то получается локализованный вывод. В противном случае "белиберда", по крайней мере у меня...
См. скриншоты
Вкладений файл
|
Повідомлення створено: 19. 05. 2018 [07:07]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"mr_dsv" wrote:
"roman" wrote:
P.S. Гипотезу про кривую поддержку UTF-8 в системных функциях, в данной ситуации с паспортом, можете проверить, добавив, в поле описания открываемого в паспорте параметра, ASCII символы, что экраном уже почти подтверждается, т.е. в строку "Регулятор давления на входе КС." добавьте первый символ, например, ':' и это сообщение будет отображаться нормально.
Гипотеза полностью подтвердилась... Печалька однако.
Собственно, заменил isspace() своей реализацией, тем более, что оно простейшее для ASCII, а большего в XMLNode и не нужно.
Вы, кстати, в архив сообщений заглядывали, он там нормальный, в смысле сообщений в кириллице?
"mr_dsv" wrote:
"roman" wrote:
Собственно, мне не понятно зачем вообще ставить локаль с UTF-8 и потом включать хаки с перекодированием в CP1251, если можно прямо поставить локаль в такой кодировке!? Тем более, OpenSCADA поддерживает однобайтные кодировки.
Эмулятор терминала pterm для Photon QNX 6.5 скажем так - "вещь в себе".
В нем есть собственная трансляция символов для различных кодировок. Если её настроить и использовать "фокус" с перекодировкой при выводе сообщений в stdout в OpenSCADA, то получается локализованный вывод. В противном случае "белиберда", по крайней мере у меня...
См. скриншоты
Но вопрос "Зачем использовать UTF-8 в OpenSCADA на QNX?" по прежнему открыт. В какой кодировке интерфейс, а значит и буфер обмена, Фотона?
Learn, learn and learn better than work, work and work.
|
Повідомлення створено: 19. 05. 2018 [10:36]
|
mr_dsv
Сергій Дорошка
Contributor
Автор теми
Зареєстрован(а) с: 31.10.2012
Повідомлення: 31
|
"roman" wrote:
Собственно, заменил isspace() своей реализацией...
Проверю после выходных.
"roman" wrote:
Вы, кстати, в архив сообщений заглядывали, он там нормальный, в смысле сообщений в кириллице?
Да в файлах архива все нормально, если их просматривать из OpenSCADA или "нормальной" Photon-овской программы.(не pterm).
"roman" wrote:
В какой кодировке интерфейс, а значит и буфер обмена, Фотона?
Photon еще с QNX 4 "внутренне" работает с UTF-8, но к графическому эмулятору терминала pterm это не относится... Поэтому вот такие "коныки" чтобы увидеть кирилицу в нем.
|
|
|