239 lines
17 KiB
C++
239 lines
17 KiB
C++
//---------------------------------------------------------------------------
|
||
#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
|