Команда
GETCASH вызывает (или прерывает) полный цикл действий по приёму купюры (включая контроль таймаута ожидания).
- GETCASH [<respfile> [<timeout>]]
- <respfile> - имя файла ответа, в ResponseDir;
- <timeout> - таймаут ожидания ввода, секунды (по умолчанию ноль).
- Ответ записывается в файл, первая строка может иметь одно из перечисленных значений:
- 0 OK ;Купюра принята, код купюры - на второй строке
- 1 TIMEOUT ;Таймаут истёк, купюра не принята
- 2 OFFLINE ;Нет связи с купюроприёмником
- 3 BUSY ;Купюроприёмник занят конкурирующим запросом GETCASH (многозадачное обращение допустимо)
- 4 CANCEL ;Запрос прерван (программно - либо GETCASH без параметров, см ниже, либо завершение работы службы или системы)
- 5 INTERRUPT ;Запрос прерван по состоянию купюроприёмника (например, вынули стекер)
- 6 SIMULATED ;Ввод купюры симулирован, код купюры - на второй строке (см. команду SIMCASH). По сути этот результат полностью аналогичен 0 OK, однако возвращается другим кодом, чтобы предоставить клиентской программе возможность отличать смоделированные события от реальных.
Если первая строка
0 OK или
6 SIMULATED, то вторая - тип принятой купюры (число).
Если тип принятой купюры равен нулю, то это означает, что произошёл возврат купюры пользователю. Возврат делается в случае браковки купюры при приёме/проверке в
сеансе купюроприёмника (см. объект
CashMaticCashSession). Номинал купюры недоступен (либо купюроприёмник его не определил, либо определил как недопустимый).
Если тип купюры не равен нулю, то его можно преобразовать в номинал купюры по таблице соответствия купюр.
Обычное соответствие типов купюр номиналам для российских рублей:
Тип купюры | Номинал, рублей |
1 (•) | 5 |
2 | 10 |
3 | 50 |
4 | 100 |
5 | 500 |
6 | 1000 |
7 | 5000 |
(•) обычно 5 рублей купюроприёмники не принимают, тем не менее код для такого типа купюр зарезервирован.
При нулевом таймауте ожидание ввода купюр не выполняется. В этом случае, при отсутствии проблем оборудования и связи, результатом может быть либо
"1 TIMEOUT", либо
"3 BUSY". Результат
"3 BUSY" указывает на наличие конкурирующего запроса (вызов с нулевым таймаутом может быть использован для обнаружения конкурирующего запроса, сам по себе такой вызов гарантированно не создаёт конкуренции другим запросам).
Имя файла ответа рекомендуется формировать при каждом запросе уникальное, поскольку запросов может быть вызвано одновременно несколько (все, кроме первого, получат результат
3 BUSY, но тем не менее эта ситуация возможна). Служба формирует файлы ответов в режиме
shared read-write-delete, поэтому наложение ответов действительно возможно и не вызывает конфликта с точки зрения файлового доступа.
Если команда вызвана без параметров, то она прерывает ожидание конкурирующего запроса с результатом
4 CANCEL. Клиентское приложение может использовать это для досрочного принудительного завершения предыдущего вызова
GETCASH.
Примечание: при использовании NDemia CashMatic KioskBrowser вызов GETCASH без параметров приводит к тому, что текущий активный сеанс купюроприёмника (см. объект CashMaticCashSession) завершается событием OnCancel.
Команда
GETCASH может реагировать на отказы, которые произошли до её вызова. Состояние купюроприёмника определяется по установленным на момент вызова флагам (см.
Флаги состояний), учитываются флаги, задаваемые командой
CONFIG BillValidatorBadStatusMask, если какие-либо из флагов установлены (в том числе с помощью команды
BVSIMEVENT), то
GETCASH немедленно завершается с результатом
5 INTERRUPT.
Программа
GETCASH.EXE представляет собой безоконный (не консольный и не скрыто-оконный) процесс операционной системы, результат выполнения записывается в текстовый файл под указанным именем в пути
ResponseDir (конфигурируемый параметр службы
NDemia CashMatic Kiosk, настраивается командой
CONFIG).
Служба
NDemia CashMatic Kiosk должна работать на момент вызова
GETCASH.
Служба открывает файлы ответов в режиме
FILE_SHARE_DELETE, что позволяет вызывающей программе перед вызовом службы создать файл с флагом
FILE_FLAG_DELETE_ON_CLOSE (см. документацию по
Windows API, функция
CreateFile), и в дальнейшем не заботиться об удалении этого файла - операционная система автоматически удалит его даже при сбоях работы программного обеспечения.
Вызывающее приложение может узнать о готовности ответа по завершению процесса
GETCASH.EXE