Содержание
Здесь содержится список заметок “Что сделать”.
Обнаружено замедление прорисовки сенсоров crwdaq vs
crw32 в несколько раз. Видимо, надо разобраться с
_crw_eldraw.TSmartBitmap.
Замена TMemoryStream на TBitmap.Assign
дает ускорение, но не в разы.
Исправлено EAccessViolation в TTask.Terminate. Проблема была в вызове IsWindows() - подразумевался контекст wmctrl.IsWindows(), а по факту был lclintf.IsWindows(), за счет uses и контекста по умолчанию.
Еще осталась проблема с долгими прорисовками и их зацикливанием.
Поправить идентификаторы ошибок в DAQ системе (проблемы при загрузке, watchdog и другие). Сделано 20251028.
Добавить процедуры логирования типа Problem, Trouble с другими уровнями
Severity.
Сделано 20251024.
Картинки от Гурина - добавить в библиотеку.
Сделано 20251028.
Доработать меню SDI.
Упордочить работу с окнами SDI.
Убрать DAQ-DATA-WINDOW.
Вероятная утечка ресурсов - не закрывается COM порт при использовании pipe_init?
Сделать интерфейс баз данных под Linux.
Пока он есть только под Windows.
Устранить оставшиеся проблеммные места
SKIP_DRAFT.
Их еще осталось несколько штук по всему коду.
Уровень серьезности проблем - низкий.
Сделать драйвер LCARD E140.
Сделать драйвер LCARD E440.
Доделать (перевести под новую версию пакета ) DEMO
конфигурации из crw32.
Пока переведено около половины.
Доработать систему приоритетов потоков под Unix.
Существующая система приоритетов работает, но имеет существенные
недостатки.
А именно, таблица приоритетов нуждается в пересмотре и
доработке.
Не все стандартные программы stdlib корректно переведены
и проверены.
В некоторых остались проблеммные с точки зрения кроссплатформенности
фрагменты.
В основном это имена файлов после readini.
Осталась проблема с (первой) прорисовкой окон под
GTK2.
Проблема решена, но с избыточным числом прорисовок.
Поправка: проблема исчезла в ALSE & Lazarus 2.6.
Осталась проблема с объединением меню (MenuMerge).
Она работает некорректно под GTK2, поэтому отключена
под Linux.
Утилиту crwdaqwatcher надо реализовать под
Windows.
Пока она есть только под Unix.
Надо доработать справочную систему crwlib.
На данный момент есть две системы подготовки справки -
fpdoc и pasdoc.
Надо их доработать или адаптировать для автогенерации справок из кода и
комментариев.
Доработать справочную систему crwdaq.
Она частично взята из crw32 и частично устарела,
требует обновления.
Хорошо бы перевести всю справку crwdaq под
markdown.
Но это большая работа.
Инсталлятор crwdaq под Windows требует
доработок.
Ответственный - Н.Гурин.
Инсталлятор fpcupdeluxe под Windows
также требует доработок.
Ответственный - Н.Гурин.
Сценарии Logon, Logout для crwdaq и daq-системы под Unix и Windows немного отличаются по функционалу. Надо их привести к примерно одному набору функций.
Сделать поддержку OPC UA.
Сделать сервер OpcUaSrv по аналогии с DimSrv.
Упростить форматирование имени осей (X,Y) в описании окна Curve_Window. Сейчас, например, нельзя ось X назвать “Время, с” и выровнять надпись по левому краю, а ось Y - “Напряжение, В”, а хотелось бы. Использование символов форматирования сделать более очевидным. Название графика вынести в отдельный параметр, например Title… Например: Axis[X/Y] - Описание оси [X/Y] в формате: Имя оси (в двойных кавычках), Выравнивание (лево/право/центр), Минимум, Максимум. Title = “Контрольная мишень” AxisX = “Время, час”, Right, 0, 60 AxisY = “Ток, мкА”, Left 0, 300
Неразрывные пробелы в надписи сенсора. При использовании неразрывных пробелов в начале или конце “закавыченной” надписи сенсора, они игнорируются (удаляются).
Добавить возможность выравнивать текст в надписи сенсора по левому, правому краю или по центру.
Добавить возможность изменять размер окна выбора кривых при открытии dat-файла. Или добавить горизонтальный ScrollBar. При длинном имени кривой, например, если в имени много префиксов, то кроме самих префиксов, в окне больше ничего не увидишь.
Иконка Crw32 в меню при нажатии иконки crwdaq в системном трее под ОС
Linux. Заменить иконку на актуальную.
Исправлено 20241206.
Добавить возможность скрывать стрелки сдвига изображения мнемосхемы в меню панели инструментов. Не так много у нас сейчас мнемосхем, которые нужно прокручивать вверх-вниз, вправо-влево, но стрелки есть всегда и занимают полезное место на панели.
Если задан параметр Name в секции описания окна Curve_Window, функция WinSelectByCurve() не срабатывает, кроме того, Cron-сервер не отрисовывает окна по имени секции, где задан параметр Name, а только по имени, заданном в этом параметре. Иногда удобнее задавать заголовок окна русским текстом (лучше даже с пробелами), но в таком случае, проявляются вышеуказанные проблемы.
Надпись “Восстановить crwdaq…” в системном трее Linux звучит, как будто
“Восстановить после сбоя”, или что-то в этом роде. Может написать
“Показать crwdaq…” или “Показать окно crwdaq…”?
Исправлено 20241206.
Функции devSend, devMsg, devPost, devSendMsg, devPostMsg по документации
возвращают integer, а на самом деле real. Если в коде для вызова любой
из этих функций использовать iNul(), будет ошибка компиляции, которую
тут не ожидаешь - ведь возвращаемый тип, указанный в документации -
integer.
Исправлено 20250414.
Инсталлятор install-daqgroup-all.run. Предлагаю убрать из инсталлятора проверку номера версии. Сам инсталлятор крайне редко меняется, а запускается при каждом обновлении дистрибутивов. При запуске инсталлятора каждый раз выводится сообщение с предложением прервать установку, так как install-daqgroup-all уже установлен, только мы его и не устанавливаем - мы через него выполняем установку других пакетов и этот диалог сбивает с толку.
В [&CronSrv.StartupScript] (_main_init.cfg) не работает команда @Guard - нет программы на которую ссылается AppName: @Guard.AppName=~~.exe а также, @Guard не умеет адаптировать пути, например: @Guard.CmdLine=/Icon=3 /r ~~..!daqname.cfg
Утилита для уведомлений под ОС Linux (dunst) не умеет фильтровать спам,
как это реализовано в FPQui под Windows с guid.
Исправлено 20250514.
В текстовом редакторе CrwDaq есть функция запрета редактирования - если отредактировать текст, затем запретить возможность редактирования и закрыть окно, окно закроется и все изменения будут утеряны. Если закрывать окно при снятом запрете, появляется диалог, предлагающий сохранить файл перед закрытием.
В диалоге “Открыть новое окно DAQ”, в окне выбора списка кривых и тегов
сделать множественный (MultiSelect)
выбор кривых из списка, чтобы можно было выделять диапазон мышью (нажать
и тянуть).
При открытии нового окна (диалог “Открыть новое окно DAQ”), находясь в окне выбора кривых и/или тегов, при нажатии кнопки “Отмена” выдается окно-предупреждение “Не выбраны данные для отображения”. Считаю, что окно-предупреждение тут лишнее, так как нажатие “Отмена” происходит по требованию пользователя и это штатное действие (пользователь же сам нажал кнопку), а это предупреждение только мешает, так как переводит фокус на себя и требует закрытия, то есть нажатия ОК, Отмена или крестика. При нажатии кнопки “Ладно”, если данные не выбраны, такой диалог нужен. Устранено 20251029.
Панель инструментов: Добавить возможность скрывать стрелки навигации из панели инструментов (сделать их включение опцией).
Предложение от Городнова Алексея: Сделать возможность размещать на панели инструментов горизонтальные сенсоры, на которых отображать имя Daq-системы (подобие заголовка, только в тулбаре).
Изменить градацию высоты (Ctrl+Alt+1..4) панели инструментов:
- убрать большой и громадный размеры;
- заменить их следующим образом:
Ctrl+Alt+4 - максимальная высота (48 пикселей) - сделать значением по
умолчанию;
Ctrl+Alt+3 - высота панели = 32 пикселя
Ctrl+Alt+2 - высота панели = 24 пикселя
Ctrl+Alt+1 - высота панели = 16 пикселей
Ctrl+Alt+0 - панель инструментов скрыта (как и раньше)
Предложение для внесения правок в пакет: предусмотреть изменение отрисовки (выравнивания) для панели инструментов окон, где она используется. Сделать возможность привязки панели к левому краю, а не только к верху (а может и справа тоже). Во многих системах, панель инструментов съедает много пространства по-вертикали и из-за этого мнемосхему приходится сильно сжимать в размерах, когда проще было бы переместить панель инструментов влево (как правило, по горизонтали свободного места всегда больше).
На тестовом стенде обнаружены проблемы WatchDog (ошибка
с кодом 8).
Сообщения указывает на модули _crw_daqpascaldevice
и _crw_daqpascalcompiler
(ключевое слово WatchdogStarted).
Анализ кода позволил выдвинуть гипотезу, что сбой происходит из-за
разницы в деталях реализации mSecNow и
IntMSecNow.
Сделана попытка исправить 20250514.
Исправлено 20250527.
На тестовом стенде обнаружен сильный рост размера журнального файла
@tooltip.log.
Это происходит из-за “спама” - избыточно часто поступающих
сообщений.
Нужно сделать ограничение размеров журнальных файлов.
Исправлено 20250909.
CrwDaq Copyright © 2001-2025 Alexey Kuryakin daqgroup@mail.ru