ШТРИХ–М ШТРИХ-ФР-К [282/284] Приложение 2 в помощь программисту

ШТРИХ–М ШТРИХ-М-ФР-К [282/284] Приложение 2 в помощь программисту
Руководство программиста
282
Приложение 2 В помощь программисту
1. Существует различие в том, как драйвер реагирует на выполнение методов, связанных и не
связанных с операциями печати. В случае вызова какого-либо метода, связанного с выполнением
операций печати, выдача драйвером ответа OK говорит лишь о том, что в данных, выводимых на
печать, нет ошибок, но, однако, не означает, что во время печати не возникнет какой-нибудь
ошибки (например, обрыв бумаги). В свою очередь, при вызове остальных методов, ответ
драйвера OK символизирует успешное выполнение метода.
2. Имеется две стратегии поведения при выполнении команд печати.
Первая стратегия заключается в следующем. По началу печати ККМ переходит в подрежим 4
«Фаза печати операции» (например, при закрытии чека) и не принимает от хоста дальнейших
команд, связанных с печатью (например, команды новой регистрации продажи). Состояние ККМ
можно отслеживать, подавая через определённые интервалы времени команду «Запрос
состояния». Если очередной запрос состояния вернул подрежим ККМ 0 «Бумага есть», то можно
посылать следующую команду печати. Возможна ситуация, когда из подрежима 4 «Фаза печати
операции» ККМ переходит в подрежим 2 «Активное отсутствие бумаги» (закончилась бумага).
Тогда необходимо выдать об этом сообщение оператору ККМ с требованием заправить новый
рулон бумаги и продолжить запрашивать состояние ККМ до тех пор, пока она не окажется в
подрежиме 3 «После активного отсутствия бумаги» (в ККМ был заправлен новый рулон бумаги).
После этого следует подать команду «Продолжение печати», которая повторяет печать
прерванного чека, и опять продолжить запрашивать состояние, пока очередной запрос не вернёт
подрежим ККМ 0 «Бумага есть». Теперь ККМ готова принять очередную команду печати. Таким
образом, мы как бы дожидаемся окончания фазы печати, анализируя состояние ККМ командой
«Запрос состояния». У этой стратегии имеется недостаток, так как команда «Запрос состояния»
выполняется довольно медленно: вместо команды «Запрос состояния» можно пользоваться
командой «Короткий запрос состояния», которая выполняется гораздо быстрее.
Вторая стратегия подразумевает анализ состояния ККМ по ошибкам, возвращаемым ККМ. Сразу
после подачи операции печати (например, команды закрытия чека) подаётся следующая команда
печати (например, команда регистрации продажи). Если ККМ возвращает ошибку 50h «Идёт
печать предыдущей команды», то она находится в подрежиме 4 «Фаза печати операции».
Повторяем команду печати и анализируем ошибку до тех пор, пока её значение не станет равным
0 «Ошибок нет». Возможна ситуация, когда значение ошибки, возвращаемой на попытку
выполнить очередную команду печати во время выполнения предыдущей, равно 72h «Команда не
поддерживается в данном подрежиме», что означает, что ККМ находится в подрежиме 2
«Активное отсутствие бумаги». В этом случае необходимо выдать оператору ККМ сообщение, что
необходимо вставить новый рулон бумаги, и продолжать посылать команду печати и
анализировать возвращаемую ошибку. Значение ошибки станет равным 58h «Ожидание команды
продолжения печати», когда оператор заменит бумагу и ККМ перейдёт в подрежим 3 «После
активного отсутствия бумаги». После этого можно продолжить посылать команду печати,
анализировать ошибку, пока её значение не станет равным 0 «Ошибки нет».

Содержание