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

Содержание

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

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

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

## Некоторые правила библиотеки crwlib

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

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

2. Сразу перед или после общих определений включается декларация режима совместимости - обычно
   это `{$IFDEF FPC}{$mode objfpc}{$ENDIF}{$H+}` или `{$IFDEF FPC}{$mode Delphi}{$ENDIF}{$H+}`.
   Выражение `{$H+}` в конце включает поддержку длинных строк (что строго обязательно).

3. Первым uses модулем должен быть модуль _crw_sharemem.pas.
   Этот модуль инициализирует менеджер общей памяти, поэтому он должен быть первым в списке,
   что гарантирует инициализацию менеджера памяти до того, как начнется выделение динамичекой памяти.

4. Поскольку пакет CRW-DAQ и большинство других проектов команды DaqGroup являются многопоточными,
   необходимо после менеджера общей памяти включить в список uses каждого модуля выражения:
   `{$IFDEF UNIX} cthreads, dl, {$ENDIF} {$IFDEF WINDOWS} windows, {$ENDIF}`.
   Включение модуля cthreads в Unix версии обеспечивает правильную инициализацию кода поддержки потоков.

5. В качестве шаблона нового модуля можно использовать файл _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_curves.pas | Модуль содержит объект "кривые" (curve) для описания массивов точек (x,y).
_crw_daqevnt.pas | Модуль реализует события системы DAQ (daq events) и средства их обработки.
_crw_daqtags.pas | Модуль реализует базу данных (таблицу) тегов для системы сбора данных (daq tags).
_crw_dbcon.pas | Модуль констант интерфейса баз данных ADO (database constants) для 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_fpu.pas | Модуль FPU (float point unit) - функции поддержки математического сопроцессора.
_crw_fsm.pas | Модуль реализует Конечные Автоматы (finite state machine) для задач управления.
_crw_funmin.pas | Модуль функций многомерной минимизации (function minimization) для расчетов.
_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_lsqmin.pas | Модуль функций минимизации методом МНК (least squares minimization) для расчетов.
_crw_lsqpoly.pas | Модуль реализует полиномы методом наименьших квадратов (least square polynoms).
_crw_meta.pas | Модуль реализует метаданные (metadata) (контрольные суммы) для файлов конфигурации.
_crw_mmt.pas | Модуль мультимедийного таймера (multimedia timer) для периодического опроса.
_crw_netif.pas | Модуль поддержки сетевого интерфейса (network interface) и чтения параметров сети.
_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_serio.pas | Модуль поддержкeпоследовательных 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.pas | Файл общих определений. Всегда должен включаться в код: `{$I _crw_sysdef}`
_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_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 (вроде основной).
Вспомогательные файлы библиотеки: | Описания, лицензия, статьи, и т.д.
crwlib_index.md | Описание библиотеки crwlib - этот файл, который вы сейчас читаете.
crwlib_license.md | Файл лицензионного соглашения для данной библиотеки и пакета 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