Содержание CHM Справка Глоссарий Дерево Классов CrwApi

Перейти к Содержанию

# crwlib - библиотека кодов для пакета CRW-DAQ и других проектов

> Здесь приводятся сведения по библиотеке crwlib, являющейся частью пакета crwdaq. Имеется справка и chm.

Перейти к Содержанию

## Путеводитель по библиотеке crwlib

CHM - Справка в формате CHM

Справка - список всех доступных **Модулей*

Глоссарий - список всех доступных Идентификаторов

Дерево Классов - список всех доступных Классов в порядке наследования

CrwApi - интерфейс для подключения плагинов

Перейти к Содержанию

## Назначение библиотеки crwlib

Библиотека crwlib - это пакет или набор кодов (в основном на языке Free Pascal) для пакета crwdaq и других (сопутствующих) проектов команды разработчиков DaqGroup.

Используя пакет crwlib, Вы автоматически принимаете лицензионное соглашение на его использование и распространение.
Либо Вы должны отказаться от его использования.

Перейти к Содержанию

## Правила использования crwlib

Библиотека crwlib должна использоваться по определенным правилам.

1. Во все модули crwlib, crwkit и crwdaq сразу после объявления модуля включается файл общих определений - _crw_sysdef.inc.
   Это можно сделать директивой компилятора `{$I _crw_sysdef.inc}`. Смотрите, например, файл _crw_alloc.pas. Использование включаемого файла вместо явного определения режимов компиляции позволяет централизовать управление проектом - все определения можно изменить в одном файле.

2. Сразу после общих определений недо включить декларацию режима совместимости.
   Обычно для этого включается файл _crw_sysmode.inc. Это можно сделать директивой компилятора `{$I _crw_sysmode.inc}`. Смотрите, например, файл _crw_alloc.pas. Использование включаемого файла вместо явного определения режимов компиляции позволяет централизовать управление проектом - все определения можно изменить в одном файле.

3. Первым выражением после uses всегда должно идти включение файла _crw_uses_first.inc.
   Файл `_crw_uses_first` включает модуль _crw_sharemem.pas менеджера общей памяти, идущий первым в списке.
   Это гарантирует инициализацию менеджера памяти до того, как начнется выделение динамической памяти.
   Поскольку пакет crwdaq и другие проекты команды DaqGroup являются многопоточными,
   после менеджера общей памяти включен список системных модулей для каждой платформы:
   `{$IFDEF UNIX} cthreads, dl, {$ENDIF} {$IFDEF WINDOWS} windows, {$ENDIF}`.
   Включение модуля cthreads в Unix версии обеспечивает правильную инициализацию кода поддержки потоков.
   `Если не включать _crw_uses_first.inc первым модулем uses для КАЖДОГО модуля, то программа будет работать неверно!`.
   Таким образом, `каноническое` начало `КАЖДОГО` модуля будет выглядеть примерно так:

    unit _crw_xxxx;

    {$I _crw_sysdef.inc}

    {$I _crw_sysmode.inc}

    uses
     //////////////////////////////////////////////////////
     {$I _crw_uses_first.inc} // NB: MUST BE FIRST USES !!!
     //////////////////////////////////////////////////////
     sysutils, classes, math,
     … и так далее …

4. В качестве шаблона нового модуля можно использовать файл _crw_xxxx.pas.
   Этот шаблон содержит пустой модуль **_crw_xxxx*, в котором надо xxxx заменить на нужное имя.
   В шаблоне уже прописаны указанные выражения.

Перейти к Содержанию

## Состав библиотеки crwlib

Библиотека crwlib является частью проекта (пакета) CRW-DAQ и содержит следующие файлы.

Модуль (файл) |
--- | ---
Основные файлы библиотеки: | Файлы модулей с программыми кодами библиотеки (Free Pascal).
_crw_alloc.pas | Модуль работы с памятью, исключениями, реестр объектов и атомарные операции.
_crw_adodb_tlb.pas | Модуль заголовков интерфейса баз данных ADO (ADO type library) для Windows.
_crw_ascio.pas | Модуль асинхронного консольного ввода-вывода (для консольных задач серверного типа).
_crw_appforms.pas | Модуль поддержки форм (окон) TForm и связанных с ними процедур.
_crw_apptools.pas | Модуль команд уровня приложения (application tools) для облегчения кодирования.
_crw_apputils.pas | Модуль утилит уровня приложения (application utilities) для облегчения кодирования.
_crw_assoc.pas | Модуль обработки файловых ассоциаций (association) - действий по расширению файла.
_crw_az.pas | Модуль "анти-зомби" (anti-zombie) для завершения задач после завершения родителя.
_crw_base32.pas | Модуль быстрого де/кодирования строк алгоритмом base32 для передачи данных.
_crw_base64.pas | Модуль быстрого де/кодирования строк алгоритмом base64 для передачи данных.
_crw_bsencode.pas | Модуль быстрого де/кодирования строк алгоритмом backslash для передачи данных.
_crw_cmdargs.pas | Модуль обработки аргументов командной строки (объект CmdArgs).
_crw_calib.pas | Модуль содержит объекты калибровки (calibration) для преобразования данных.
_crw_cgi.pas | Модуль поддержки CGI (common gateway interface) для WEB программирования.
_crw_colors.pas | Модуль определяет цветовые константы (именованные цвета) и цветовые функции.
_crw_couple.pas | Модуль содержит таблицы термопар (thremocpuple) и зависимостей для калибровок.
_crw_crypt.pas | Модуль криптографических функций (cryptography), hex_encode/decode, вычисление MD5.
_crw_crwapi.pas | Модуль интерфейса (CRW API) для создания программных расширений (плагинов).
_crw_curves.pas | Модуль содержит объект "кривые" (curve) для описания массивов точек (x,y).
_crw_daqevnt.pas | Модуль реализует события системы DAQ (daq events) и средства их обработки.
_crw_daqtags.pas | Модуль реализует базу данных (таблицу) тегов для системы сбора данных (daq tags).
_crw_dbapi.pas | Модуль интерфейса баз данных (database API), пока реализована для Windows.
_crw_dbcon.pas | Модуль констант интерфейса баз данных ADO (database constants) для Windows.
_crw_dcc32.pas | Модуль оболочки для компилятора Delphi (dcc32) для Windows.
_crw_delauna.pas | Модуль реализует метод триангуляции Делоне (Delauna) для рисования 3D поверхностей.
_crw_dim.pas | Модуль интерфейса к библиотеке DIM (distributed information manager).
_crw_dima.pas | Модуль DIM-агента (dim_agent) для связи по DIM через сервер dimsrv.
_crw_dimc.pas | Модуль реализует клиетскую библиотеку классов для DIM (dim client).
_crw_dimq.pas | Модуль реализует потокобезопасную очередь (dim queue) для обработки данных DIM.
_crw_dims.pas | Модуль реализует серверную библиотеку классов для DIM (dim server).
_crw_dynar.pas | Модуль димнамических 1,2D массивов (dynamic array) с потокобезопасностью и защитой.
_crw_ee.pas | Модуль интерпретатора выражений (expression evaluator) для интерактивных расчетов.
_crw_ef.pas | Модуль элементарных математических функций (elementary functions) для расчетов.
_crw_eldraw.pas | Модуль элементарных функций для рисования (elementary drawing) графики.
_crw_environ.pas | Модуль для работы с переменными среды окружения (environment variables).
_crw_fft24.pas | Модуль функций быстрого преобразования Фурье для размера массивов, кратного 2 или 4.
_crw_fft.pas | Модуль функций преобразования Фурье (fast Fourier transform) для мат.расчетов.
_crw_fifo.pas | Модуль реализует быструю потокобезопасную очередь FIFO (first in, first out).
_crw_fio.pas | Модуль функций файлового ввода-вывода (file input/output).
_crw_fonts.pas | Модуль функций поддержки шрифтов (fonts) для графических приложений.
_crw_fpu.pas | Модуль FPU (float point unit) - функции поддержки математического сопроцессора.
_crw_fsm.pas | Модуль реализует Конечные Автоматы (finite state machine) для задач управления.
_crw_funmin.pas | Модуль функций многомерной минимизации (function minimization) для расчетов.
_crw_geoid.pas | Модуль региональных идентификаторов (geolocation identifiers), т.е. коды стран.
_crw_gloss.pas | Модуль реализует потокобезопасный глоссарий (glossary) - массив (ключ,значение).
_crw_guard.pas | Модуль функций защиты (guard) для системы прав доступа пакета CRW-DAQ.
_crw_guiutils.pas | Модуль графических (GUI) утилит - формы, кнопки, фонты и т.д.
_crw_hash.pas | Модуль функций быстрого некриптографического хеширования (hash) для индексации.
_crw_hl.pas | Модуль хешированного списка (hash list) для быстрой индексации данных по ключу.
_crw_i8255.pas | Модуль драйвера цифрового ввода-вывода на базе чипа I8255 для систем управления.
_crw_lm.pas | Модуль сетевых функций (lan manager) для поддержки сети, в основном Windows.
_crw_lmd.pas | Модуль для сбора данных в режиме списка данных (list mode data) для спектрометрии.
_crw_lngid.pas | Модуль языковых констант (language identifiers) для поддержки языков.
_crw_lsqmin.pas | Модуль функций минимизации методом МНК (least squares minimization) для расчетов.
_crw_lsqpoly.pas | Модуль реализует полиномы методом наименьших квадратов (least square polynoms).
_crw_lttb.pas | Алгоритм LTTB понижения дискретности (downsampling) для ускорения графиков.
_crw_memo.pas | Модуль поддержки функций редактирования текста (TMemo) - Undo/Redo,Find,Print.
_crw_meta.pas | Модуль реализует метаданные (metadata) (контрольные суммы) для файлов конфигурации.
_crw_mimeapps.pas | Модуль обработки файлов по типу MIME и расширению для Unix.
_crw_mmt.pas | Модуль мультимедийного таймера (multimedia timer) для периодического опроса.
_crw_netif.pas | Модуль поддержки сетевого интерфейса (network interface) и чтения параметров сети.
_crw_oledb.pas | Модуль заголовков интерфейса баз данных OLE DB для Windows.
_crw_opc.pas | Модуль заголовков интерфейса автоматизации OPC DA для Windows.
_crw_pio.pas | Модуль для работы с портами ввода-вывода (port in/out) процессора.
_crw_pipe.pas | Модуль реализует именованные каналы (named pipes) для связи процессов IPC.
_crw_pkk4.pas | Модуль содержит драйвер CAMAC контроллера PKK4 для систем сбора данных.
_crw_plut.pas | Модуль утилит рисования (plot utilities) для (виртуального) рисования 2D фигур.
_crw_proc.pas | Модуль функций для работы с процессами (process) операционной системы.
_crw_regexp.pas | Модуль поддержки регулярных выражений (regular expression) для обработки текста.
_crw_riff.pas | Модуль поддержки формата RIFF (ResourceInterchangeFileFormat) включая CRW, WAV.
_crw_rtc.pas | Модуль функций времени (real time clock) для быстрого измерения реального времени.
_crw_rtdtc.pas | Модуль содержит таблицы калибровок (resistive thermo detectors + thrermo couples).
_crw_runerr.pas | Модуль поддержки для обработки ошибок времени исполнения (runtime errors).
_crw_sect.pas | Модуль содержит имена часто используемых секций (section) для файлов конфигураций.
_crw_serio.pas | Модуль поддержки последовательных COM портов (serial in/output) ввода-вывода.
_crw_sesman.pas | Модуль поддержки сессий (session manager) при запуске нескольких сессий программы.
_crw_sharemem.pas | Модуль менеджера (общей) памяти. Всегда должен быть первым uses модулем.
_crw_sharm.pas | Модуль общей памяти (shared memory) для межпроцессного взаимодействия IPC.
_crw_simplex.pas | Модуль для решения задач линейного программирования симплексным (simplex) методом.
_crw_smirtl.pas | Модуль поддержки прокси (smi runtime library) для Конечных Автоматов SMI.
_crw_smiuirtl.pas | Модуль интерфейса пользователя (smi ui runtime library) Конечных Автоматов SMI.
_crw_snd.pas | Модуль звуковой системы (sound) для воспроизведения звуковых сообщений.
_crw_spcfld.pas | Модуль определяет специальные каталоги (special folder) для хранения настроек .
_crw_spk.pas | Модуль речевого синтезатора (speaker) для произношения текстовых сообщений.
_crw_spline.pas | Модуль реализует сглаживающие сплайны для аппроксимации данных.
_crw_sort.pas | Модуль реализует алгоритмы быстрого поиска и сортировки (sort).
_crw_str.pas | Модуль функций обработки строк (string) и тестов.
_crw_svd.pas | Модуль матричных операций SVD (singular values decomposition) для расчетов.
_crw_syscal.pas | Модуль системного калькулятора (system calculator) для потокобезопасных вычислений.
_crw_sysdef.inc | Файл общих определений. Всегда должен включаться в код: `{$I _crw_sysdef.inc}`
_crw_sysmode.inc | Файл режима совместимости. Всегда должен включаться в код: `{$I _crw_sysmode.inc}`
_crw_sysid.pas | Модуль процедур для идентификации системы (system identification).
_crw_task.pas | Модуль поддержки задач (task), т.е. управляемых процессов (супервизор процессов).
_crw_tcp.pas | Модуль поддержки TCP сокетов (TCP socket) для связи по сети TCP/IP.
_crw_th123.pas | Модуль реализует гистограммы (type histogram 1D,2D,3D) для статистических расчетов.
_crw_tslist.pas | Модуль потокобезопасных списков (thread safe list) для многопоточных программ.
_crw_uac.pas | Модуль поддержки UAC (user access control), в основном для Windows.
_crw_uart.pas | Модуль поддержки UART (последовательных COM портов).
_crw_vbox.pas | Модуль поддержки VirtualBox для гостевых виртуальных систем.
_crw_wine.pas | Модуль поддержки WINE для приложений Windows.
_crw_wmctrl.pas | Модуль процедур для управления и работы с окнами (window manager control).
_crw_zm.pas | Модуль поиска нуля и минимума (zeromin), а также интеграла функции одной переменной.
fpcx64mm.pas | Модуль менеджера общей памяти из пакета MoRMot2 для Linux x86_64 (альтернативный).
synfpcx64mm.pas | Модуль менеджера общей памяти из пакета MoRMot для Linux x86_64 (вроде основной).
Вспомогательные файлы библиотеки: | Описания, лицензия, статьи, и т.д.
index.htm | Описание библиотеки crwlib - этот файл, который вы сейчас читаете.
license.htm | Файл лицензионного соглашения для данной библиотеки и пакета CRW-DAQ.
habr-534466.pdf | Очень полезная статья по переводу кода Delphi под Linux, рекомендуемая к прочтению.
laz-unicode-en.pdf | Статья (en) о поддержке Unicode в Lazarus.
laz-unicode-ru.pdf | Статья (ru) о поддержке Unicode в Lazarus.
laz-multiplatform-en.pdf | Статья (en) о многоплатформенном программировании в Lazarus.
laz-multiplatform-ru.pdf | Статья (ru) о многоплатформенном программировании в Lazarus.

Перейти к Содержанию

Успешного Вам использования библиотеки crwlib!

> CRW-DAQ Copyright (c) 2001-2023 Alexey Kuryakin daqgroup@mail.ru