В данном примере обработчиком события является объект, реализующий интерфейс
CashMaticCashSessionEvents.
Реализация обработчика представляется несколько более сложной, чем в предыдущих примерах, однако этот механизм является намного более гибким.
(см. также
Примеры обработчиков событий сеанса купюроприёмника)
var CashMatic = external;
//CashMatic - рекомендуемое имя для основного объекта
//объектной модели NDemia CashMatic
var CashSession = CashMatic.Cash.CreateSession();
//создаётся сеанс купюроприёмника, объект CashMaticCashSession
var EventHandlerId = 0; //идентификатор обработчика событий,
//нулевое значение показывает отсутствие установленного обработчика
function Пример_инициализация()
// эта функция должна быть вызвана
//для включения приёма купюр на купюроприёмнике.
{
EventHandlerId = CashSession.AddHandler(
new EventHandler("пример обработчика"));
//создаётся и устанавливается наш
// объект-обработчик событий (EventHandler)
//идентификатор установленного обработчика
// запоминается как EventHandlerId
CashSession.Timeout = 15;
//таймаут приёма купюры задаётся в секундах, по умолчанию
// равен нулю (задавать значение не обязательно),
// нулевой таймаут воспринимается программой как
// отсутствие ограничения по времени для приёма купюры.
CashSession.Detect = false;
//выключаем режим проверки купюр (это действие не является
// обязательным, режим проверки выключен по умолчанию)
//Включаем приём купюр на купюроприёмнике:
CashSession.Active = true;
}
function Пример_завершение()
// эта функция должна быть вызвана
//для выключения приёма купюр на купюроприёмнике.
{
//Выключаем приём купюр на купюроприёмнике:
CashSession.Cancel();
//Прикладной скрипт должен обязательно выключать приём купюр явно,
// не полагаясь на выключение при удалении объекта CashSession,
// иначе возможны потери событий,
// в том числе потери принятых купюр.
if(EventHandlerId) //проверяем, был ли установлен наш обработчик
{
//удаляется ранее установленный обработчик событий:
CashSession.RemoveHandler(EventHandlerId);
EventHandlerId = 0;
}
alert("Приём купюр завершён, всего принято купюр: "
+ CashSession.BillCount + " шт. на сумму "
+ CashSession.BillTotal + " руб.");
}
function EventHandler(title)
/*
Эта функция инициализирует объект-обработчик событий,
реализующий интерфейс CashMaticCashSessionEvents.
Параметр title показывает, как прикладной скрипт может
добавить к создаваемому объекту собственные
свойства, не предусмотренные спецификацией
интерфейса CashMaticCashSessionEvents.
*/
{
this.OnAccept = function(CashSession, Bill)
//эта функция выполняется при приёме каждой купюры.
{
this.ShowResult("Получена купюра " + Bill + " рублей");
};
this.OnTimeout = function(CashSession, Timeout)
//эта функция выполняется в случае, если купюра не была принята
// за отведённое для этого время.
{
this.ShowResult("Купюра не получена за " + Timeout + " с");
};
this.ShowResult = function(text)
//Дополнительная функция (метод) объекта EventHandler,
// не предусмотренная спецификацией интерфейса
// CashMaticCashSessionEvents.
{
alert(this.title + ": " + text);
};
this.title = title;
//Дополнительное свойство объекта EventHandler,
// не предусмотренное спецификацией интерфейса
// CashMaticCashSessionEvents.
//допускается частичная реализация интерфейса
// CashMaticCashSessionEvents, поэтому мы можем не назначать
// код для обработки остальных методов интерфейса (OnActive,
// OnBillCount, OnBillRange, OnCancel, OnDetect, OnFailure,
// OnReject)
}