/* * DP25.h * * Created on: 11 сент. 2015 г. * Author: Igor */ #ifndef DP25_H_ #define DP25_H_ #include "devices/Printers/Printer.h" #include "devices/ComPort.h" #include "devices/SocketPort.h" #define fcDisplayClear 0x21 //(33)Очистка дисплея #define fcDisplayLower 0x23 //(35)Вывод текста в нижнюю строку дисплея #define fcOpenServiceInv 0x26 //(38)Открытие нефискального чека #define fcCloseServiceInv 0x27 //(39)Закрытие нефискального чека #define fcPrintFreeTextInServiceInv 0x2A //(42)Печать свободного текста в нефискальном чеке #define fcFeedPaper 0x2C //44 Протяжка ленты #define fcCheckConnection 0x2D //Проверяет режим соединения с ПК а раньше было: Обрезка ленты #define fcCutPaper 0x2E //(46)Обрезка ленты #define fcDisplayUpper 0x2F //(47)Вывод текста в верхнюю строку дисплея #define fcOpenFiscalInv 0x30 //(48)Открытие фискального (клиентского) чека #define fcRegisterSale 0x31 //(49)Регистрация продажи #define fcReportOnTaxRates 0x32 //(50)Возвращает активные ставки НДС #define fcSubtotal 0x33 //(51)Подитог #define fcTotal 0x35 //(53)Оплата (итог) #define fcPrintFreeTextInFiscalInv 0x36 //(54)Печать свободного текста в фискальном чеке #define fcCloseFiscalInv 0x38 //(56)Закрытие фискального чека #define fcSetFiscalInvParam 0x39 //(57) Write client GSM/E-mail for current fiscal receipt ИИН INN #define fcRegisterArticleSale 0x3A //(58)Регистрация продажи запрограммированного артикула #define fcCancelFiscalInv 0x3C //(60)Аннуляция (сторно) фискального чека #define fcSetDateTime 0x3D //(61)Установка даты и времени #define fcGetDateTime 0x3E //(62)Чтение даты и времени #define fcShowDateTime 0x3F //(63) Show current date and time #define fcLatestFiscalRecord 0x40 //(64)Информация о последней фискальной записи #define fcAmountOfSavingsPerDay 0x41 //(65)Информация о сумме накоплений за день #define fcTurnoversOfSavingsPerDay 0x42 //(66)Информация о сумме накоплений за день #define fcFreeFieldsByFiscalMemory 0x44 //(68)Количество Z-отчетов оставшихся до заполнения ФП #define fcDailyFinancialReport 0x45 //69 (45h) X и Z отчёты #define fcParishOrConsumption 0x46 //(70)Служебный приход или расход #define fcPrintDiagnostic 0x47 //(71)Печать диагностической информации #define fcFiscalization 0x48 //(72)Фискализация и пререгистрация #define fcGetStatusFP 0x4A //(74)Получение статуса #define fcFiscalTransactionsStatus 0x4C //(76)Статус фискальной транзакции #define fcBeep 0x50 //(80)Звуковой сигнал #define fcSetTaxRates 0x53 //Программирование ставок НДС #define fcPrintBarCode 0x54 //(84)Печать штрих-кода #define fcDateOfLastEntryByFiscalMemory 0x56 //Дата последней фискальной записи #define fcGetTradingGroupInfo 0x57 //Получение информации по группам товаров #define fcGetDepInfoInCheck 0x58 //Получение информации по отделу в текущем чеке #define fcTestOfFiscalMemory 0x59 //Test of Fiscal Memory #define fcDiagnosticInfo 0x5A //(90)Диагностическая информация #define fcSetManufacturersSerialNumber 0x5B //(91)Программирование заводского номера принтера #define fcPrintDivideLine 0x5C //(92) Печать разделительной линии #define fcFiscalReportByDate 0x5E //(94)Полный фискальный отчет за период заданный датами #define fcFiscalReportByNumber 0x5F //Фискальный отчет по номерам Z-отчетов #define fcSetSoftwarePassword 0x60 //Set Software Password #define fcReadingError 0x64 //(100) Reading an error #define fcSetOperatorPassword 0x65 //(101)Установка пароля оператора #define fcInfoByCurrentInv 0x67 //(103)Информация о текущем чеке #define fcOperatorReport 0x69 //(105)Отчет по операторам #define fcOpenCashDrawer 0x6A //(106)Открытие денежного ящика #define fcPrgAndReadArticle 0x6B //(107)Программирование и считывание параметров товаров #define fcGetPLUTurnoversByZReport 0x6C //(108) Get PLU turnovers by Z - report #define fcDailyReportByTypesOfPayment 0x6E //(110)Дневной отчет по типам оплаты #define fcReportByArticle 0x6F //(111)Отчет по артикулам #define fcReportByOperators 0x70 //(112)Отчет по операторам #define fcReadFiscalMemoryBlock 0x74 //(116)Чтение блока фискальной памяти #define fcReadDeviceInfo 0x7B //(123) Информация об устройстве #define fcGetDocInEJByDate 0x7C //(124) Поиск документа в ЭЖ по дате #define fcGetInfoFromEJ 0x7D //(125) Информация из ЭЖ #define fcPrintStamp 0x7F //(127) Stamp operations #define fnCheckUpdate 0xC8 //(200) проверить обновление TODO удалить при обновлении основной версии #define fnUploadImage 0xCA //(202) Загрузить изображение #define fnUploadStamp 0xCB //(203) Загрузить изображение для штампа #define fnSetServiceParam 0xFD //(253) Установка сервисных параметров #define fnProgramming 0xFF //(255) Программирование //Свои коды ошибок #define ERRIO 100001 //ERR_IO #define ERRActivation 100050 //Ошибка изза не активации программы #define ERRDiscounts 100051 //Ошибка если прентер не поддерживает скидки class StatusDP25 { private: protected: public: bool stat[6][8]; StatusDP25(); void SetStatus(unsigned char* status); std::string getStatus(); //Статусы в виде строки }; class DP25: public CPrinter { private: //unsigned char ReadAr[255]; ///<буфер для чтения ответа unsigned char FrameSeqNumber; ///<порядковый номер запроса unsigned char CommandName; ///<Номер последней выполненной команды. unsigned char getNextSeq(); bool Sw1,Sw2,Sw3,Sw4,Sw5,Sw6,Sw7,Sw8; //Заполняются при вызове DiagnosticInfo public: int m_activated1; //Устанавливается время от времени (2147443647 если то - активированно) //int m_activated2; //Устанавливается случайным образом по таймеру (2147443647 если то - активированно) std::string PrinterName; ///<Название принтера FPG-1000 или DP-25 std::string PrinterVersion; ///<Версия программного обеспечения std::string PrinterNumber; ///<Заводской номер (серийник) std::string PrintColumns; //Сколько строк печатает принтер bool m_SaveLog; ///<Сохранять ли в лог файл std::string m_LogFilePath; ///<Куда сохранять лог файл int m_OpCode; std::string m_OpPwd; int m_TillNmb; //std::string ComNumber; //int BaudRate; int TimeOut; int CuttingPluName; //Как обрезать строки //ComPort* csPort; Port* csPort; //TCP or Serial StatusDP25* Status; DP25(); virtual ~DP25(); //MyError SendPMessage(unsigned char* msg,int size,std::string &answer); int SendPMessage(unsigned int cmd, unsigned char* msg, int size, std::string &answer); bool isOk(){ return true; }; bool OpenSerial(std::string ComNumber, int BaudRate); //bool OpenCOMPort(std::string ComNumber,int BaudRate); bool CloseCOMPort(); bool OpenSocket(std::string host, int port); //Отркыть соединение по сокету bool CloseSocket(); MyError PrinterInit(); bool CashInOut(bool test, double sum){ return true; }; bool GetCashSum(double& sum){ return true; }; MyError PrintZReport(); MyError PrintXReport(); MyError PrintLine(std::wstring line) { MyError err; err.ErrorCode = 0; return err; }; int GetLineLength(); //Получить ширину строки чека в символах. MyError DisplayClear(); MyError DisplayLower(std::string Text); ///<Вывод текста в нижнюю строку дисплея MyError OpenServiceInv(int& ShiftNumber, int& DocNumber); ///<Открытие нефискального чека MyError CloseServiceInv(int& ShiftNumber, int& DocNumber); ///<Закрытие нефискального чека MyError SetFiscalInvParam(int Type, std::string Data); ///