8000 GitHub - salara1960/custom: Утилита печати для устройства "Казначей ФА" (с принтером "Custom VKP80II SX")
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Утилита печати для устройства "Казначей ФА" (с принтером "Custom VKP80II SX")

License

Notifications You must be signed in to change notification settings

salara1960/custom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CUSTOM

Утилита печати для устройства "Казначей ФА" (с принтером "Custom VKP80II SX")

Файлы проекта:

* Makefile        - файл сценария компиляции

* functions.c     - библиотека используемых функций (source)

* functions.h     - файл заголовков библиотеки функций (header)

* main.c          - собственно файл утилиты (main)

* README.md       - файл описания проекта

* libiconv_hook.a - библиотека перекодировки текста

Параметры интерфейса управления - порта RS232 (/dev/ttyACM0,...)

115200 8N1
hardware/software control off

Поддерживаемые скорости порта RS232

  • 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)

Утилита имеет несколько уровней логирования (печати на stdout и в лог-файл)

  • LOG_OFF - логирование выключено, за исключением записи в syslog start/stop сообщений
  • LOG_ON - логирование включено, основной режим логирования
  • LOG_DEBUG - логирование включено, расширенный режим логирования
  • LOG_DUMP - логирование включено, полный режим логирования

P.S.

* Утилита пишет лог-файл "custom_log.txt" (не более 32M), а также в syslog start/stop сообщения.
* Утилита 'видит' следующие сигналы : SIGHUP, SIGALRM, SIGTERM, SIGINT, SIGKILL, SIGSEGV, SIGABRT.
* Утилита инициализирует таймер с периодом в 100 миллисекунд, при этом используется сигнал SIGALRM.

About

Утилита печати для устройства "Казначей ФА" (с принтером "Custom VKP80II SX")

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  
0