ГЛАВНАЯ СТРАНИЦА

Как настроить фискальные устройства с форматом фискальных данных 1.05

10.1

История переиздания
26.09.2022

Для работы с устройством программному модулю (драйверу) нужны значения свойств из памяти устройства, информация о поддержке команд и некоторые параметры, определяемые моделью.

Свойства хранятся в памяти устройства в таблицах. Наличие и расположение этих таблиц отличаются у различных моделей. Для того чтобы это все работало, должны быть заданы закрытые параметры программного модуля, описывающие хранение свойств, поддержку команд и все остальное.

Для поставляемых моделей фискальных регистраторов Штрих созданы системные программные модули. При подключении устройства нужно выбрать для него подходящий программный модуль или создать свой, указав закрытые параметры на основе информации из инструкции к фискальному регистратору.

Например, у фискального регистратора ФР ШТРИХ-КОМБО-ФР-К ФФД 1.05 свойство Отрезка чека хранится в Таблице 1 (поле 7, ряд 1). Это нужно указать в закрытых параметрах программного модуля:

PropetiesSettings = (
  CuttingType = (Table = 1, Field = 7,  Row = 1)

Фискальный регистратор ФР ШТРИХ ФР-К ФФД 1.05 не поддерживает команду Прочитать параметры шрифта (код команды 26H). Ее нужно указать в закрытых параметрах программного модуля:

 
CommandsSettings = (
  GetFontParams = (Supported = False) -- 26H

При запуске программный модуль (драйвер) проверяет соответствует ли модель устройства модели из программного модуля.

Полный список незаполненных параметров есть в корневом программном модуле ФР ШТРИХ ФФД 1.05 . Чтобы запустить фискальный регистратор неизвестной модели нужно использовать программный модуль ФР ШТРИХ совместимый ФФД 1.05 .

Как настроить печать документов?

После собственного документа фискальный регистратор распечатывает рекламный текст, затем пропускает пустую строку для отрезки и печатает клише. Клише состоит из максимального количества строк, которое можно разместить между печатающей головкой и ножом гильотины. После печати клише вызывается отрезка, которая попадает в нужное место, так как это расстояние было определено.

Таким образом в начале каждого документа присутствует клише, распечатанное вместе с прошлым документом. Наши собственные документы, которые мы печатаем на фискальном регистраторе как на принтере тоже исполняют этот алгоритм. И отрезка должна попадать на предназначенную для нее пустую строку независимо от размеров шрифтов и значения параметра устройства Сжатие шрифта.

Кроме того, наши документы могут состоять из нескольких страниц и после каждой из них должна выполняться отрезка. При печати всех новых страниц кроме первой пропускается одна полужирная строка для отрезки, чтобы точно попасть в отрезку.

Чтобы рассчитать момент вызова отрезки драйверу необходимо знать расстояние от печатающей головки до ножа гильотины и значения высоты используемых шрифтов. Они указываются в закрытых параметрах программного модуля, а их значения получаются при калибровке.

Как выполнить калибровку устройства?

Для калибровки в параметрах устройства нужно указать CalibrationPrint = True и запустить устройство. В результате будет выполнена печать калибровочной страницы: по 10 строк каждым шрифтом без сжатия и со сжатием.

После этого можно отключить параметр CalibrationPrint (CalibrationPrint = False), чтобы не расходовать бумагу.

Если устройство поддерживает чтение размеров шрифтов, то их высоты будут выведены в консоль. Тогда необходимо указать только значение параметра KnifeDistance в точках.

Для этого нужно распечатать с отрезкой два любых документа фискального регистратора, например, чека, и измерить линейкой на втором документе расстояние от начала данных (следующая строка после клише) до отрезки.

Чтобы получить высоту точки, нужно измерить высоту любых десяти строк калибровочной страницы, выведенных одним шрифтом, и поделить его на высоту этого шрифта в точках и еще на 10.

Высота точки = h10строк / hшрифт * 10

Важно

Если включено сжатие, нужно измерять строки, напечатанные сжатыми шрифтами, или выключить сжатие.

Полученную величину нужно округлить до целого значения и указать в закрытом параметре KnifeDistance программного модуля.

Например, для устройства ФР ШТРИХ-КОМБО-ФР-К ФФД 1.05 распечатана калибровочная страница, сжатие выключено.

Высота 10 строк, напечатанных шрифтом 2, из первой части калибровочной страницы равна 54.5 мм.

Высота шрифта 2, взятая из консоли, - 77 точек.

Высота точки = 54,5 / 77 * 10 = 0,07 мм

Далее на печать выводятся 2 X-Отчета. На втором из них расстояние от первой строки после клише 15,7 мм.

KnifeDistance = 15,7 / 0,07 = 224 точки

Полученное значение нужно указать в закрытых параметрах программного модуля:

DeviceSettings = (
  KnifeDistance = 224

Если устройство не поддерживает чтение размеров шрифтов, за размер точки можно принять условно 0,07 мм или другое значение, равное или превышающее высоту самого мелкого шрифта. Таким же образом нужно рассчитать значение KnifeDistance. Затем нужно поменять высоту каждого шрифта на калибровочной странице со сжатием и без нее и указать в их параметрах программного модуля в порядке следования шрифтов.

DeviceSettings = (
  Font = (Height = , HeightCompressed = )

Высота в точках получается в результате деления высоты десяти строк на условную высоту точки и еще на 10.

Например, для устройства, не поддерживающего чтение размеров шрифтов, была распечатана калибровочная страница и два X-отчета. Сжатие выключено.

Расстояние от первой строки после клише второго X-отчета составило 13,3 мм.

В параметрах устройства было указано значение параметра KnifeDistance, равное 190 (13,3 / 0,07 = 190).

Затем каждые 10 строк, выведенные всеми шрифтами со сжатием и без него, были измерены линейкой.

Например, высота 10 строчек, выведенных шрифтом 1 без сжатия составила 31 мм, со сжатием - 18,5 мм. При переводе в точки получены результаты 44 (31 / 0,07 / 10 = 44) и 26 (18,5 / 0,07 / 10 = 26).

Затем были выполнены измерения и расчеты для всех остальных шрифтов.

Полученные результаты были указаны в параметрах Font программного модуля.

DeviceSettings = (
...
  KnifeDistance = 190
  Font = (Height = 44, HeightCompressed = 26)
  Font = (Height = 74, HeightCompressed = 41)
  Font = (Height = 24, HeightCompressed = 24)
  Font = (Height = 41, HeightCompressed = 41)
  Font = (Height = 30, HeightCompressed = 30)
  Font = (Height = 41, HeightCompressed = 24)
  Font = (Height = 41, HeightCompressed = 24)
)