Module: uDeviceInterface
Базовый класс устройства.
constructor Create(DeviceHandle: TDeviceHandle; IniParams: TIniParams).
function BeginUpdateDeviceState(GetState: Boolean = False): TDeviceState;
function CheckStateUser(UserID: TGUID): Boolean;
function DeviceMessage(Language: Integer; Name: String): String; overload;
function DeviceMessageFmt(Language: Integer; Name: String; const Args: array of Const): String;
procedure SendTransactionNotification(TransactionID: TGUID; Text: String); overload;
procedure SendTransactionNotification(TransactionID: TGUID; Text: String; ProgressPosition, ProgressMax: Integer); overload;
procedure WriteDebugMessage(Text: String; Mask: Longword = 1); overload;
procedure WriteDebugMessage(Text: String; const Args: array of Const; Mask: Longword = 1); overload;
procedure WriteErrorMessage(Text: String); overload;
procedure WriteErrorMessage(Text: String; const Args: array of Const); overload;
procedure WriteMessage(Text: String); overload;
procedure WriteMessage(Text: String; const Args: array of Const); overload.
property ChildCount: Integer read GetChildCount;
property Childs[Index: Integer]: TChildDeviceInterface read GetChild;
property DeviceID: TGUID read GetDeviceID;
property DeviceName: String read GetDeviceName write SetDeviceName;
property InputDeviceCount: Integer read GetInputDeviceCount;
property InputDevices[Index: Integer]: TDeviceClient read GetInputDevice;
property MainDevice: TMainDeviceInterface read GetMainDevice.
procedure BeforeUpdateDeviceState(NewDeviceState: TDeviceState); virtual.
function ChildClassByModuleInterface(ModuleInterface: TModuleInterface): TChildDeviceInterfaceClass; virtual.
procedure InputDeviceConnectError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceDisconnectError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceInputBestBefore(DeviceClient: TDeviceClient; BestBefore: TDateTime; CancelHandle: THandle); virtual;
procedure InputDeviceInputBestBeforeError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceInputIndentifier(DeviceClient: TDeviceClient; IdentifierType: TGUID; IdentifierCode: String; IdentifierParams: TParams; CancelHandle: THandle); virtual;
procedure InputDeviceInputIndentifierError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceInputKey(DeviceClient: TDeviceClient; KeyNumber: Integer; KeyLayout: TIniParams; CancelHandle: THandle); virtual;
procedure InputDeviceInputKeyError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceInputPrice(DeviceClient: TDeviceClient; Price: Double; CancelHandle: THandle); virtual;
procedure InputDeviceInputPriceError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceInputWeight(DeviceClient: TDeviceClient; Weight: Double; CancelHandle: THandle); virtual;
procedure InputDeviceInputWeightError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceLogonError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
procedure InputDeviceStateChanged(DeviceClient: TDeviceClient; CancelHandle: THandle); virtual.
constructor Create(DeviceHandle: TDeviceHandle; IniParams: TIniParams);
Дескриптор устройства
Параметры устройства
Вызывается из оболочки.
function BeginUpdateDeviceState(GetState: Boolean = False): TDeviceState;
Загрузить текущее состояние устройства
Возвращает состояние устройства.
Используется для начала редактирования состояния устройства. Пример
function CheckStateUser(UserID: TGUID): Boolean;
Идентификатор пользователя
Имя пользователя
Проверяет есть ли пользователь в списке пользователей состояния устройства.
Возвращает True - если пользователь найден, иначе False.
function DeviceMessage(Language: Integer; Name: String): String; overload;
Язык строковой константы
Имя строковой константы
Возвращает именованную строковаю константу на заданном языке.
Именованные строковые константы считываются из конфигурационного файла драйвера устройства. Параметр DeviceMessages.Message.
Если строка на заданном языке не найдена, ищется строка на английском языке.
Если строка так и не будет найдена, вернется отформатированный текст "Device message '%S' of language %S not found"
function DeviceMessageFmt(Language: Integer; Name: String; const Args: array of Const): String;
Язык строковой константы
Имя строковой константы
Аргументы для форматированной строки
Аналог метода DeviceMessage, но для форматированной строковой константы.
procedure SendTransactionNotification(TransactionID: TGUID; Text: String); overload;
Идентификатор транзакции, для которой отправляется уведомление
Текст уведомления
Отправляет уведомление во время выполнения транзакции.
Например, "Введите PIN-код" при авторизации оплаты банковской картой.
procedure SendTransactionNotification(TransactionID: TGUID; Text: String; ProgressPosition, ProgressMax: Integer); overload;
Идентификатор транзакции, для которой отправляется уведомление
Текст уведомления
Текущий прогресс
Максимальное значение прогресса
Отправляет уведомление во время выполнения транзакции с прогрессом.
procedure WriteDebugMessage(Text: String; Mask: Longword = 1); overload;
Текст отладочного сообщения
Маска отладочного сообщения
Выводит на консоль оболочки отладочное сообщение (желтого цвета), если в конфигурационном файле указан параметр Debug.Messages.Show, и его значение по маске не равно 0 или равно True.
Выводит в файл debuglog.txt отладочное сообщение, если в конфигурационном файле указан параметр Debug.Messages.Save, и его значение по маске не равно 0, или равно True.
У каждого устройства свой файл в папке <DeviceDriverDir>\<IniFileNameWithoutExt>\DEBUG.
Дочерние устройства пишут сообщения в файл главного устройства.
В сообщение будет добавлена текущая дата.
procedure WriteDebugMessage(Text: String; const Args: array of Const; Mask: Longword = 1); overload;
Текст отладочного сообщения
Аргументы для форматированного сообщения
Маска отладочного сообщения
Аналог метода WriteDebugMessage, но для форматированного сообщения.
procedure WriteErrorMessage(Text: String); overload;
Текст сообщения об ошибке
Выводит на консоль оболочки сообщение об ошибке (красного цвета).
В сообщение будет добавлена текущая дата.
Сообщение дублируется в файле exceptlog.txt. Если устройство запущено загрузчиком, то файл находится в папке загрузчика, иначе в папке с драйвером устройства.
В сообщение будет добавлена текущая дата и имя устройства, написавшего сообщение.
procedure WriteErrorMessage(Text: String; const Args: array of Const); overload;
Текст сообщения об ошибке
Аргументы для форматированного сообщения
Аналог метода WriteErrorMessage, но для форматированного сообщения.
procedure WriteMessage(Text: String); overload;
Текст информационного сообщения
Выводит на консоль оболочки информационное сообщение (белого цвета).
В сообщение будет добавлена текущая дата.
procedure WriteMessage(Text: String; const Args: array of Const); overload;
Текст информационного сообщения
Аргументы для форматированного сообщения
Аналог метода WriteMessage, но для форматированного сообщения.
property ChildCount: Integer read GetChildCount;
Количество дочерних устройств.
Берется из конфигурационного файла драйвера устройства. Количество параметров $$$Child.
property Childs[Index: Integer]: TChildDeviceInterface read GetChild;
Список дочерних устройств.
Берется из конфигурационного файла драйвера устройства. Параметр $$$Child.
property DeviceID: TGUID read GetDeviceID;
Идентификатор устройства.
Берется из конфигурационного файла драйвера устройства. Параметр $$$DeviceID.
property DeviceName: String read GetDeviceName write SetDeviceName;
Название устройства.
Берется из конфигурационного файла драйвера устройства. Параметр $$$DeviceName.
property InputDeviceCount: Integer read GetInputDeviceCount;
Количество устройств ввода, с которыми связано устройство.
Берется из конфигурационного файла драйвера устройства. Количество параметров $$$DeviceRoleDevices.InputDevice.
property InputDevices[Index: Integer]: TDeviceClient read GetInputDevice;
Список устройств ввода, с которыми связано устройство.
Берется из конфигурационного файла драйвера устройства. Параметр $$$DeviceRoleDevices.InputDevice.
property MainDevice: TMainDeviceInterface read GetMainDevice;
Главное устройство.
У главного устройства возвращает себя же.
procedure BeforeUpdateDeviceState(NewDeviceState: TDeviceState); virtual;
Новое состояние устройства
Обработчик смены состояния устройства.
Вызывается в TDeviceState.EndUpdateDeviceState.
function ChildClassByModuleInterface(ModuleInterface: TModuleInterface): TChildDeviceInterfaceClass; virtual;
Идентификатор типа дочернего устройства
Оболочка вызывает этот метод для создания дочернего устройства по её идентификатору типа.
Идентификатор типа дочернего устройства берется из конфигурационного файла драйвера устройства. Параметр $$$Child.$$$ModuleInterface.
Идентификатор типа дочернего устройства указывается в карточке редактирования программного модуля дочернего устройства в поле Интерфейс.
procedure InputDeviceConnectError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки подключения к устройству ввода.
procedure InputDeviceDisconnectError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки потери соединения с устройством ввода.
procedure InputDeviceInputBestBefore(DeviceClient: TDeviceClient; BestBefore: TDateTime; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Срок годности
Обработчик ввода срока годности.
procedure InputDeviceInputBestBeforeError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки ввода срока годности.
procedure InputDeviceInputIndentifier(DeviceClient: TDeviceClient; IdentifierType: TGUID; IdentifierCode: String; IdentifierParams: TParams; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Тип идентификатора
Код идентификатора
Параметры идентификатора
Обработчик ввода идентификатора.
procedure InputDeviceInputIndentifierError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки ввода идентификатора.
procedure InputDeviceInputKey(DeviceClient: TDeviceClient; KeyNumber: Integer; KeyLayout: TIniParams; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Номер клавиши
Обработчик нажатия клавиши.
procedure InputDeviceInputKeyError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки определения нажатой клавиши.
procedure InputDeviceInputPrice(DeviceClient: TDeviceClient; Price: Double; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Цена
Обработчик ввода цены.
procedure InputDeviceInputPriceError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки ввода цены.
procedure InputDeviceInputWeight(DeviceClient: TDeviceClient; Weight: Double; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Вес
Обработчик ввода веса.
procedure InputDeviceInputWeightError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки ввода веса.
procedure InputDeviceLogonError(DeviceClient: TDeviceClient; ErrorMessage: String; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Текст ошибки
Обработчик ошибки авторизации на устройстве ввода.
Больше не вызывается, т.к. на устройствах убрана проверка прав доступа.
procedure InputDeviceStateChanged(DeviceClient: TDeviceClient; CancelHandle: THandle); virtual;
Клиент к устройству ввода
Обработчик смены состояния устройства ввода.