Files
Tools_CPP/devices/Printers/AYRA01FRKZ/AYRA01FRKZ.h
2024-11-01 12:23:13 +05:00

239 lines
17 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//---------------------------------------------------------------------------
#ifndef AYRA01FRKZ_H
#define AYRA01FRKZ_H
//---------------------------------------------------------------------------
#include "../Printer.h"
#include "../../ComPort.h"
//#include <stdTools.h>
//#include <string>
//---------------------------------------------------------------------------
//Добавил когда делал кросплатформеного кассирра
typedef unsigned long DWORD;
//---------------------------------------------------------------------------
#define fc3F 0x3F //63 ? Запрос состояния ККМ 29
#define fc41 0x41 //65 A Аннулирование 45
#define fc43 0x43 //67 C Скидка / Надбавка 47
#define fc45 0x45 //69 E Запрос кода состояния ККМ 37
#define fc46 0x46 //70 F Чтение таблицы 55
#define fcBeep 0x47 //71 G Гудок 27
#define fc48 0x48 //72 H Выход из текущего режима 22
#define fc49 0x49 //73 I Внесение денег 43
#define fc4A 0x4A //74 J Закрыть чек (со сдачей) 48
#define fc4B 0x4B //75 K Программирование времени 39
#define fc4C 0x4C //76 L Печать строки 23
#define fc4D 0x4D //77 M Запрос наличных денег в ящике ККМ 30
#define fc4E 0x4E //78 N Сторно 44
#define fc4F 0x4F //79 O Выплата денег 43
#define fc50 0x50 //80 P Программирование таблицы 54
#define fc52 0x52 //82 R Регистрация 44
#define fc56 0x56 //86 V Вход в режим 21
#define fc57 0x57 //87 W Возврат 46
#define fc58 0x58 //88 X Получение последнего сменного итога 31
#define fcCancelFiscalInv 0x59 //89 Y Аннулирование всего чека 43
#define fcDailyFinancialReport 0x5A //90 Z Снятие суточного отчета с гашением 51
#define fc61 0x61 //97 a Ввод заводского номера 57
#define fc62 0x62 //98 b Фискализация / перерегистрация 57
#define fc63 0x63 //99 c Запрос диапазонов дат и смен 58
#define fc64 0x64 //100 d Программирование даты 39
#define fc65 0x65 //101 e Фискальный отчет по диапазону дат 58
#define fc66 0x66 //102 f Фискальный отчет по диапазону смен 59
#define fc67 0x67 //103 g Начало снятия отчета без гашения 49
#define fc6B 0x6B //107 k Технологическое обнуление ККМ 41
#define fc6C 0x6C //108 l Команда печати клише чека 27
#define fc6D 0x6D //109 m Ввод кода защиты ККМ 41
#define fc6E 0x6E //110 n Тестовый прогон 40
#define fc71 0x71 //113 q Инициализация таблиц нач. значениями 41
#define fc73 0x73 //115 s Команда печати нижней части чека 50
#define fc74 0x74 //116 t Запрос активизированности кода защиты ККМ 39
#define fc75 0x75 //117 u Отрезать чек 27
#define fc77 0x77 //119 w Общее гашение 52
#define fc78 0x78 //120 x Отмена последней скидки/надбавки 47
#define fcOpenCashDrawer 0x80 //128 А Открыть денежный ящик 27
#define fc82 0x82 //130 В Демонстрационный прогон 41
#define fc84 0x84 //132 Д Получение очередного блока данных ПО ККМ 55
#define fc85 0x85 //133 Е Импульсное открытие денежного ящика 28
#define fc86 0x86 //134 Ж Получить очередную строку картинки по номеру 57
#define fc87 0x87 //135 З Печать поля 23
#define fc88 0x88 //136 И Звуковой сигнал 27
#define fc8A 0x8A //138 К Очистить массив картинок 56
#define fc8B 0x8B //139 Л Добавить строку картинки 56
#define fc8C 0x8C //140 М Статус массива картинок 32
#define fc8D 0x8D //141 Н Печать картинки по номеру 26
#define fc8E 0x8E //142 О Печать картинки с хоста 25
#define fc8F 0x8F //143 П Передать данные в порт 28
#define fc90 0x90 //144 Р Параметры картинки в массиве 33
#define fc91 0x91 //145 С Считать регистр 33
#define fc92 0x92 //146 T Открыть чек 43
#define fc99 0x99 //153 Щ Расчет по чеку (с закрытием) 47
#define fc9A 0x9A //154 Ъ Открыть смену 42
#define fc9B 0x9B //155 Ы Сторно расчета по чеку 48
#define fc9C 0x9C //156 Ь Начало считывания дампа 55
#define fc9D 0x9D //157 Э Получение версии 29
#define fc9E 0x9E //158 Ю Закрыть картинку 56
#define fc9F 0x9F //159 Я Начать считывание картинки по номеру 56
#define fcA5 0xA5 //165 е Получить тип устройства 31
#define fcB6 0xB6 //182 Печать документа по номеру 53
#define fcB7 0xB7 //183 Печать контрольной ленты 53
/*
#define fcDisplayClear 0x21 //(33)Очистка дисплея
#define fcDispalyLower 0x23 //(35)Вывод текста в нижнюю строку дисплея
#define fcOpenServiceInv 0x26 //(38)Открытие нефискального чека
#define fcCloseServiceInv 0x27 //(39)Закрытие нефискального чека
#define fcSwitchPrg 0x29 //(41)Программирование конфигурационных ключей
#define fcPrintFreeTextInServiceInv 0x2A //(42)Печать свободного текста в нефискальном чеке
#define fcPrintSetup 0x2B //(43)Установка HEADER и FOOTER и опций печати
#define fcFeedPaper 0x2C //(44)Протяжка ленты
#define fcCutPaper 0x2D //(45)Обрезка ленты
#define fcDispalyUpper 0x2F //(47)Вывод текста в верхнюю строку дисплея
#define fcOpenFiscalInv 0x30 //(48)Открытие фискального (клиентского) чека
#define fcRegisterSale 0x31 //(49)Регистрация продажи
#define fcReportOnTaxRates 0x32 //(50)Отчет по налоговым ставкам и положению десятичной точки за период
#define fcSubtotal 0x33 //(51)Подитог
#define fcRegisterSaleDisp 0x34 //(52)Регистрация продажи с выводом на дисплей
#define fcTotal 0x35 //(53)Оплата (итог)
#define fcPrintFreeTextInFiscalInv 0x36 //(54)Печать свободного текста в фискальном чеке
#define fcCloseFiscalInv 0x38 //(56)Закрытие фискального чека
#define fcRegisterArticleSale 0x3A //(58)Регистрация продажи запрограммированного артикула
#define fcCancelFiscalInv 0x3C //(60)Аннуляция (сторно) фискального чека
#define fcSetDateTime 0x3D //(61)Установка даты и времени
#define fcGetDateTime 0x3E //(62)Чтение даты и времени
#define fcDisplayDateTime 0x3F //(63)Вывод даты и времени на дисплей
#define fcLatestFiscalRecord 0x40 //(64)Информация о последней фискальной записи
#define fcAmountOfSavingsPerDay 0x41 //(65)Информация о сумме накоплений за день
#define fcDepartmentReport 0x42 //(66)Отчет по секциям
#define fcFreeFieldsByFiscalMemory 0x44 //(68)Количество свободных полей в фискальной памяти
#define fcDailyFinancialReport 0x45 //(69)Дневной финансовый отчет
#define fcParishOrConsumption 0x46 //(70)Служебный приход или расход
#define fcPrintDiagnostic 0x47 //(71)Печать диагностической информации
#define fcFiscalization 0x48 //(72)Фискализация и пререгистрация
#define fcFullFiscalReportByNumber 0x49 //(73)Полный фискальный отчет за период заданный номерами смен
#define fcGetStatusFP 0x4A //(74)Получение статуса
#define fcFiscalTransactionsStatus 0x4C //(76)Статус фискальной транзакции
#define fcReduceFiscalReportByDate 0x4F //(79)Сокращенный фискальный отчет за период заданный датами
#define fcBeep 0x50 //(80)Звуковой сигнал
#define fcOpenBackInv 0x52 //(82)Открытие чека возврата
#define fcSetTaxRates 0x53 //(83)Установка положения десятичной точки и налоговых ставок
#define fcPrintBarCode 0x54 //(84)Печать штрих-кода
#define fcSetAddTypesOfPayment 0x55 //(85)Установка наименований дополнительных типов оплаты
#define fcDateOfLastEntryByFiscalMemory 0x56 //(86)Дата последней записи в фискальную память
#define fcSetDepartmentName 0x57 //(87)Программирование наименования секции
#define fcGetDepartmentInfo 0x58 //(88)Получение информации по секции
#define fcPrgProductionTestArea 0x59 //(89)Программирование производственной тестовой области
#define fcDiagnosticInfo 0x5A //(90)Диагностическая информация
#define fcSetManufacturersSerialNumber 0x5B //(91)Программирование заводского номера принтера
#define fcFullFiscalReportByDate 0x5E //(94)Полный фискальный отчет за период заданный датами
#define fcReduceFiscalReportByNumber 0x5F //(95)Сокращенный фискальный отчет за период заданный номерами смен
#define fcGetTaxRates 0x61 //(97)Чтение запрограммированных налоговых ставок
#define fcSetRNNAndRNM 0x62 //(98)Установка РНН и РНМ
#define fcGetRNNAndRNM 0x63 //(99)Чтение РНН и РНМ
#define fcDispalyFree 0x64 //(100)Вывод на дисплей свободного текста
#define fcSetOperatorPassword 0x65 //(101)Установка пароля оператора
#define fcSetOperatorName 0x66 //(102)Установка наименования оператора
#define fcInfoByCurrentInv 0x67 //(103)Информация о текущем чеке
#define fcOperatorReport 0x69 //(105)Отчет по операторам
#define fcOpenCashDrawer 0x6A //(106)Открытие денежного ящика
#define fcPrgAndReadArticle 0x6B //(107)Программирование и чтение данных артикула
#define fcPrintDuplicateInv 0x6D //(109)Печать дубликата чека
#define fcDailyReportByTypesOfPayment 0x6E //(110)Дневной отчет по типам оплаты
#define fcReportByArticle 0x6F //(111)Отчет по артикулам
#define fcReportByOperators 0x70 //(112)Отчет по операторам
#define fcGetLastPrintedDocNumber 0x71 //(113)Получение номера последнего напечатанного документа
#define fcGetInfoOfFiscalRecords 0x72 //(114)Получение информации о фискальной записи или записях за период
#define fcPrgGraphicLogo 0x73 //(115)Программирование графического логотипа
#define fcReadFiscalMemoryBlock 0x74 //(116)Чтение блока фискальной памяти
#define fcEJ 0x78 //(120)Работа с электронной контрольной лентой
#define fcReadROMBlock 0x79 //(121)Чтение блока из ПЗУ
#define fcServiceClearEJ 0x7E //(126)Сервисная очистка контрольной ленты
#define fcServiceClearRAM 0x7F //(127)Сервисное обнуление ОЗУ
*/
//---------------------------------------------------------------------------
//unsigned int MakeCRC(unsigned char* Buf, unsigned int BufStart,unsigned int BufLen);
//---------------------------------------------------------------------------
typedef char int1;
typedef unsigned char uint1;
typedef unsigned int uint4;
#if !defined( _BORLAND )
typedef unsigned short Word; // 0..65535
#endif
typedef unsigned char BYTE;
//---------------------------------------------------------------------------
class AYRA01FRKZ : public CPrinter
{
private:
protected:
public:
ComPort* cPort;
std::string m_Password; //Пароль кассира
AYRA01FRKZ();
virtual ~AYRA01FRKZ();
bool WriteReqwest(std::string reqwest); //Послать запрос принтеру
bool ReadAnswer(std::string &answer); //Прочитать ответ принтера
bool CutPaper(bool full = true); ///<Отрезать бумагу
bool FeedPaper(int lines); ///<Протянуть бумагу
bool OpenCashDrawer(int mSec = 0); ///<Открытие денежного ящика
//Функции из родительского класса
bool isOk(); //Готов ли к работе принтер (должна быстро выполнятся)
bool OpenCOMPort(int ComNumber = -1,int BaudRate = -1); ///<Соедениться по COM порту
bool PrinterInit(); //Инициализация принтера.
bool GetCashSum(double& sum); //<Получить сумму наличности в кассе.
bool Beep(int Hz = 0,int mSec = 0); ///<Звуковой сигнал
bool PrintZReport(); ///<Печатать дневной отчёт с гашением
bool PrintXReport(); ///<Печатать дневной отчёт без гашения
bool PrintLine(std::wstring line); ///<Печатает строку текста
bool GetStateKKM(std::string& state);
std::wstring GetErrorDesc(int ResultCode); ///<Описание кода ошибки ко его коду
//Не из родителя функции а те которые в протоколе!!!
bool SetDateTime(unsigned char ye,unsigned char mo,unsigned char de,unsigned char ho,unsigned char mi,unsigned char se);
bool Abort(bool test, bool nal, double price,double count); //Аннулирование
bool Return(bool test, bool nal, double price,double count); //Возврат
bool GetCashSum(double* sum); ///<Наличных в ден ящике
bool PrintTail(); ///<Печать окончание чека
bool PrintEJ(bool full,bool clear); ///<Печать контрольной ленты
bool EnterInState(int state,int password); ///<Вход в режим
bool ExitFromState(); ///<Выход из режима
bool ReturnDiscount(); ///<Отменить последнюю скидку/надбавку
bool Discount(bool test, bool area, bool abs, double price); ///<Скидка либо надбавка
bool Settle(bool test,int type,double price); ///<Расчёт по чеку
bool ReturnSettle(bool test,int type,double price, double* remainder, double* deal); ///<Сторно расчёт по чеку
bool CloseFiscalInv(bool test, int type, double price); ///<Закрыть чек со здачей
//***Общие комманды***
bool GetStateKKM(unsigned char &state1,unsigned char &state2,unsigned char &flags); ///<Запрос состояния ККМ
bool GetDeviseType(); //Получить тип устройства
//***Команды режима регистрации***
bool OpenGang(bool test, std::wstring text); ///<Открыть смену
bool OpenFiscalInv(unsigned char type); ///<Открытие фискального (клиентского) чека
bool Storno(); //Анулирование всего чека (сторнирование)
bool CashInOut(bool test, double sum); //<Внесение +, выемка -
bool RegisterSale(double price, double count, unsigned char section); ///<Регистрация продажи
bool StornoSale(bool test, double price, double count, unsigned char section); ///<Сторнирование продажи
//***Команды режима отчётов без гашения***
bool PrintReport(unsigned char type);
//***Общие команды***
//***Команды режима программирования***
bool ReadTable(unsigned char table,unsigned short row,unsigned char field, std::string& ans); ///<Чтение поля из таблицы
//Функции из родительского класса которые не совпали с протокоольными...
};
//---------------------------------------------------------------------------
#endif