//--------------------------------------------------------------------------- #ifndef AYRA01FRKZ_H #define AYRA01FRKZ_H //--------------------------------------------------------------------------- #include "../Printer.h" #include "../../ComPort.h" //#include //#include //--------------------------------------------------------------------------- //Добавил когда делал кросплатформеного кассирра 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