Утилита печати для устройства "Казначей ФА" (с принтером "Custom VKP80II SX")
* Makefile - файл сценария компиляции
* functions.c - библиотека используемых функций (source)
* functions.h - файл заголовков библиотеки функций (header)
* main.c - собственно файл утилиты (main)
* README.md - файл описания проекта
* libiconv_hook.a - библиотека перекодировки текста
115200 8N1
hardware/software control off
- 4800
- 9600
- 38400
- 57600
- 115200 - default
./custom --dev=/dev/ttyACM0 --cmd=beep --arg=empty --log=on --password=0 --speed=115200 --codepage=CP866
Параметры по-умолчанию (их можно не указывать при вызове утилиты) :
* --log=on
* --speed=115200
* --password=0
* --codepage=CP866
- -1 - RET_MAJOR_ERROR
- 0 - RET_OK
- 1 - RET_MINOR_ERROR
- 2 - RET_TIMEOUT
- 3 - RET_NAK
- 4 - RET_ENQ
Все команды и аргументы к ним представляют собой символьные строки
1. "request_status" - Запрос состояния ККТ (аргумент : "empty").
2. "line_print" - Печать строки текстового документа (аргумент : текст в кодировке utf-8, например "пример текста").
3. "end_of_print" - Команда отрезать чек (аргумент : "empty").
4. "beep" - Звуковой сигнал (аргумент : "empty").
5. "restart_device" - Используется для перезапуска ККТ (аргумент : "empty").
6. "shift_open" - Открыть смену (аргумент : текст в кодировке utf-8 не более 57-ми символов).
7. "clishe_print" - Печать клише чека (аргумент : "empty").
8. "buttom_print" - Печать нижней части чека (аргумент : "empty").
9. "sh_code_print" - Печать штрихкода по номеру (аргумент : номер принтера 1..255, например "1").
10. "request_code_status" - Запрос кода состояния ККТ (аргумент : "empty").
11. "shift_close" - Закрыть смену (аргумент : "empty"). Команда выводит на печать отчет о закрытии смены.
12. "demo_print" - Демонстрационная печать (аргумент : Тип документа : 0,2–Демон-ая печать, 1–Информация о ККТ, 6–Печать диагностики соединения с ОФД).
13. "get_dev_type" - Получить тип устройства (аргумент : "empty").
14. "get_printer_error" - Получить последний код ошибки принтера (аргумент : "empty").
15 "get_bar_pic" - Состояние массива штрихкодов и картинок (аргумент : "barcode" - штрихкодов, "picture" - картинок).
16 "get_version" - Получение версии (аргумент : "cpu" - CPU устройства, "boot" - bootblock устройства).
17 "get_stat_exch" - Получить статус информационного обмена с ФН (аргумент : "empty").
18 "open_chek" - Открыть чек (аргумент : "X^Y"), где
X: 0-печатать чек, 1-не печатать чек;
Y: 1–чек прихода, 2–чек возврата прихода, 7–чек коррекции прихода, 8–чек коррекции возврата прихода,
4–чек расхода, 5–чек возврата расхода, 9–чек коррекции расхода,10–чек коррекции возврата расхода).
19 "cancel_chek" - Команда аннулирует (отменяет) текущий открытый чек (аргумент : "empty").
20 "coming_money" - Команда предназначена учета внесенных наличных денег (аргумент : "xxxxx"), где xxxxx - сумма.
21 "payout_money" - Команда предназначена для учета выплаченных наличных денег (аргумент : "xxxxx"), где xxxxx - сумма.
22 "close_chek" - Команда закрывает чек с автоматическим расчетом сдачи (аргумент : Форма расчета,Внесенная сумма
например "f^xxxxx", где
f: 1–Наличными, 2–Безналичными, 3–Предварительная оплата(аванс),4–Последующая оплата(кредит),
5–Иная форма оплаты(встречное предоставление), 6..10–способы расчета которые программируются;
xxxxx - внесенная сумма).
23 "reg_item" - Регистрация позиции (аргумент:Флаги,Наименованиетовара,Цена,Количество,Тип,Знак,Размер,Налог,Секция,ШК
например : "FL^fish^PR^TO^TP^SI^SZ^TA^SE^ST", где
FL: 0–проверять денежную наличность, 1–не проверять;
"fish" - наименование товара;
PR: цена регистрируемого товара, двоично-десятичное число, 2 знака после запятой(000000000000..999999999999 мде)
TO: регистрируемое количество товара, двоично-десятичное число 0000000001..9999999999
TP: тип 0–процентная, тип 1–суммовая
SI: знак 0–скидка, знак 1–надбавка.
SZ: размер : для процентной операции (000000000000..000000010000, интерпретируется как 00,00..100,00%)
для суммовой операции (000000000000..999999999999);
TA: налог : Номер ряда в Таблице 13 «Налоговые ставки».
SE: секция : Двоично-десятичное число 00 .. 30 – секция, в которую осуществляется регистрация.
"ST": ШК : Строка 16 символов в кодировке ASCII. Если ШК нет, то в поле устанавливается значение 00h(бинарные нули).
24 "enter_mode" - Вход в режим (аргумент : Режим,Пароль; например "10^9999", где 10 - режим 1,подрежим 0; 9999 - пароль).
25 "exit_mode" - Выход из текущего режима (аргумент : "empty").
26 "cash_request" - Запрос наличных (аргумент : "empty"). Команда запрашивает сумму наличных денег на текущий момент работы ККТ.
27 "get_shift_money" - Получение последнего сменного итога (аргумент : "empty"). Запрашивается последний сменный итог прихода и расхода на текущий момент.
28 "init_tables" - Инициализация таблиц начальными значениями (аргумент : "empty"). Внимание, подумай прежде чем исполнять команду !
29 "read_tables" - Чтение таблицы (аргумент : Таблица,Ряд,Поле; например "2^1^85" - Протокол работы ККТ).
30 "pic_print" - Печать картинки по номеру (аргумент : Номер,Смещение; например "1^0").
31 "shift_req_param" - Запрос параметров текущей смены (аргумент : "empty").
32 "get_stat_FN" - Запрос статуса ФН (аргумент : "empty").
33 "get_num_FN" - Запрос номера ФН (аргумент : "empty").
34 "get_black_day" - Запрос срока действия ФН (аргумент : "empty").
35 "get_ver_FN" - Запрос версии ФН (аргумент : "empty").
36 "get_err_FN" - Запрос последних ошибок ФН (аргумент : Номер блока для чтения; например "1").
(Результат выполнения пишется в файл 'get_err_FN.txt').
37 "get_noack_FD" - Запрос количества ФД, на которые нет квитанции от ОФД (аргумент : "empty").
38 "get_text_attr" - Чтение реквизита (агрумент : Номер реквизита,Номер блока; например "1046^0" - Наименование ОФД).
39 "set_text attr" - Запись реквизита (агрумент : Флаг0,Флаг1,Количество блоков,Номер блока,Номер тега,Значение текстового тега;
(аргумент : "X^Y^C^N^D:V"
X:1-выводить на печать, 0-не печатать
Y:1-пользовательский реквизит, 0-реквизит в соответствии с ФФД
C: - количество блоков
N: - номер блока
D: - номер тега (реквизита)
V: - значение тега (реквизита)
например : "1^0^1^0^1008:body@abubariba.com").
40 "set_discount" - Скидка (аргумент : Размер скидки; например "79",
Размер скидки - 0 или сумма копеек итога чека 0000000001..4294967295 мде.
При значении 0 итог чека автоматически округляется до рубля в меньшую сторону, т.е. копейки отнимаются).
41 "reg_tax_chek" - Регистрация налога на весь чек (аргумент : Тип,Сумма; например "1^74").
42 "calc_by_check" - Расчет по чеку (аргумент : Форма расчета,Сумма; например "f^xxxxx",
f: 1–Наличными, 2–Безналичными, 3–Предварительная оплата(аванс),4–Последующая оплата(кредит),
5–Иная форма оплаты(встречное предоставление), 6..10–способы расчета которые программируются;
xxxxx - сумма)
43 "storno_calc_by_chek" - Сторно расчета по чеку (аргумент : Форма расчета,Сумма; например "f^xxxxx",
f: 1–Наличными, 2–Безналичными, 3–Предварительная оплата(аванс),4–Последующая оплата(кредит),
5–Иная форма оплаты(встречное предоставление), 6..10–способы расчета которые программируются;
xxxxx - внесенная сумма).
44 "begin_get_report" - Начало снятия отчета (аргумент : Тип Отчета; например "T", где
T: 1–отчет о состоянии счетчиков, 2–отчет по секциям, 3–отчет по кассирам,
5–почасовой отчет, 7–отчет количеств, 8–служебный отчет,
9–отчет о текущем состоянии расчетов, 16 – отчет по скидкам).
45 "general_cancel" - Общее гашение (аргумент : "empty").
46 "teh_clear" - Технологическое обнуление ККТ (аргумент : "empty").
47 "set_prot_code" - Ввод кода защиты ККТ (агрумент : Номер,Код; например "N^C", где
N: 01..30,
C: 0000000000000000..9999999999999999)
48 "stat_prot_code" - Запрос активизированности кода защиты ККТ (агрумент : Номер; например "N", где
N: 01..30; Возвращает 0-не активизирован, 1-активизирован).
49 "read_register" - Считать регистр (агрумент : Регистр,Параметр1,Параметр2; например "R^P1^P2", где
R: 1..71, P1: 0..255, P2: 0..255).
50 "reprint_last_doc" - Повторная печать последнего документа (аргумент : "empty").
51 "reprint_report" - Допечатать отчет (аргумент : "empty").
52 "clear_buffer" - Очистить буфер последнего документа (аргумент : "empty").
53 "activation_FN" - Активизация ФН (аргумент : "empty").
54 "close_FN" - Закрытие архива ФН (аргумент : "empty").
55 "print_rep_reg" - Печать итогов регистрации/перерегистрации ККТ (аргумент : "empty").
56 "print_doc_by_num" - Печать документа по номеру (аргумент : Номер документа; например "5").
57 "set_date_time" - Программирование даты и времени (аргумент :День,Месяц,Год,Час,Минута,Секунд;
например "26^11^19^13^43^30" - 26.11.2019 13:43:30).
58 "set_date" - Программирование даты (аргумент : День,Месяц,Год; например "28^11^19" - 28.11.2019)
59 "set_time" - Программирование времени (аргумент :Час,Минута,Секунд; например "12^21^00" - 12:21:00)
- LOG_OFF - логирование выключено, за исключением записи в syslog start/stop сообщений
- LOG_ON - логирование включено, основной режим логирования
- LOG_DEBUG - логирование включено, расширенный режим логирования
- LOG_DUMP - логирование включено, полный режим логирования
* Утилита пишет лог-файл "custom_log.txt" (не более 32M), а также в syslog start/stop сообщения.
* Утилита 'видит' следующие сигналы : SIGHUP, SIGALRM, SIGTERM, SIGINT, SIGKILL, SIGSEGV, SIGABRT.
* Утилита инициализирует таймер с периодом в 100 миллисекунд, при этом используется сигнал SIGALRM.