NDemia Новости CashMatic Рубли Форум

Объектный обработчик событий сеанса купюроприёмника


В данном примере обработчиком события является объект, реализующий интерфейс
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)
}
тел. +7-(916)-129-26-84 (C)opyright: NDemia Ltd, Москва, 2006..2025 ndemia@ndemia.com