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

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


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

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

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


Путеводитель по библиотеке 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,
 … и так далее …
  1. В качестве шаблона нового модуля можно использовать файл _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