solarium/.svn/pristine/b7/b71983062bec67c4c3fe939fd4e8330a4a47fed1.svn-base
2021-04-15 21:07:13 +03:00

396 lines
20 KiB
Plaintext
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 _FISCAL_H_
#define _FISCAL_H_
extern CPU_INT08U FiscalState;
#define FISCAL_NOCONN 0
#define FISCAL_CONN 1
// êîäû ñëóæåáãûõ ñèìâîëîâ
#define FISC_ENQ 0x05
#define FISC_STX 0x02
#define FISC_ACK 0x06
#define FISC_NACK 0x15
// ñêîðîñòü ïåðåäà÷è ïî óìîë÷àíèþ
#define FISC_SPEED 115200
// òàéìàóò îòâåòà ïî óìîë÷àíèþ
#define FISC_TIMEOUT 105
#define FISC_BYTE_TIMEOUT 10
#define FISC_ANSWER_TIMEOUT 5000
// êîäû êîìàíä ÔÐ
#define FISC_GET_FACTORY_NUMBER 0x0f
#define FISC_GET_SHORT_STATUS 0x10
#define FISC_GET_FULL_STATUS 0x11
#define FISC_PRINT_BOLD_STRING 0x12
#define FISC_CONTROL_TAPE 0x01
#define FISC_BILL_TAPE 0x02
#define FISC_UNDERLAY_DOC 0x04
#define FISC_BEEP 0x13
#define FISC_PRINT_STRING 0x17
#define FISC_PRINT_DOC_HEADER 0x18
#define FISC_GET_MONEY_REG 0x1A
#define FISC_GET_OPER_REG 0x1B
#define FISC_BILL_CUT 0x25
#define FISC_FULL_CUT 0
#define FISC_HALF_CUT 1
#define FISC_PULL_OUT_TAPE 0x29
#define FISC_EJECT_UNDERLAY_DOC 0x2A
#define FISC_EJECT_DOWN 0
#define FISC_EJECT_UP 1
#define FISC_PRINT_STRING_BY_FONT 0x2F
#define FISC_PRINT_DAY_REPORT_NO_CLEAR 0x40
#define FISC_PRINT_DAY_REPORT_CLEAR 0x41
#define FISC_PRINT_SECTION_REPORT 0x42
#define FISC_PRINT_TAXES_REPORT 0x43
#define FISC_MAKE_DEPOSIT 0x50
#define FISC_MAKE_PAYOUT 0x51
#define FISC_PRINT_CLICHE 0x52
#define FISC_END_DOC 0x53
#define FISC_WITHOUT_ADV 0 // ñ ðåêëàìîé
#define FISC_WITH_ADV 1 // áåç ðåêëàìû
#define FISC_PRINT_ADV_TEXT 0x54
#define FISC_GET_DEVICE_TYPE 0xFC
#define FISC_OPEN_BILL 0x8D
#define FISC_BILL_SELL 0
#define FISC_BILL_BUY 1
#define FISC_MAKE_SELL 0x80
#define FISC_CLOSE_BILL 0x85
#define FISC_PRINT_CONTINUE 0xB0
#define FISC_PRINT_DAY_REPORT_TO_BUF 0xC6
#define FISC_PRINT_DAY_REPORT_FROM_BUF 0xC7
// ïåðåîïðåäåëåíèå ôóíêöèé ïåðåäà÷è
#define FiscPurgeRx Uart0_Flush
#define FiscUartSend Uart0_Send
#define FiscUartRecieve Uart0_Receive
#define FiscUartRecieveByte Uart0_RdByteWithTimeOut
#define FiscUartSendByte Uart0_WrByte
#define FiscSleep(x) OSTimeDly(x)
// îòâåò íà ïðîâåðêó ñòàòóñà FiscPoll()
#define FISC_READY 0
#define FISC_BUSY -1
#define FISC_UNDEF -2
// êîäû ðåçóëüòàòîâ ôóíêöèé
#define FISC_OK 0
#define FISC_ERR -1
// êîäû îøèáîê ÔÐ
#define FR_ERROR_CODE_1 0x1 //Íåèñïðàâåí íàêîïèòåëü ÔÏ 1, ÔÏ 2 èëè ÷àñû
#define FR_ERROR_CODE_2 0x2 //Îòñóòñòâóåò ÔÏ 1
#define FR_ERROR_CODE_3 0x3 //Îòñóòñòâóåò ÔÏ 2
#define FR_ERROR_CODE_4 0x4 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå îáðàùåíèÿ ê ÔÏ
#define FR_ERROR_CODE_5 0x5 //Íåò çàïðîøåííûõ äàííûõ
#define FR_ERROR_CODE_6 0x6 //ÔÏ â ðåæèìå âûâîäà äàííûõ
#define FR_ERROR_CODE_7 0x7 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå äëÿ äàííîé ðåàëèçàöèè ÔÏ
#define FR_ERROR_CODE_8 0x8 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîé ðåàëèçàöèè ÔÏ
#define FR_ERROR_CODE_9 0x9 //Íåêîððåêòíàÿ äëèíà êîìàíäû
#define FR_ERROR_CODE_a 0x0A //Ôîðìàò äàííûõ íå BCD
#define FR_ERROR_CODE_b 0x0B //Íåèñïðàâíà ÿ÷åéêà ïàìÿòè ÔÏ ïðè çàïèñè èòîãà
#define FR_ERROR_CODE_11 0x11 //Íå ââåäåíà ëèöåíçèÿ
#define FR_ERROR_CODE_12 0x12 //Çàâîäñêîé íîìåð óæå ââåäåí
#define FR_ERROR_CODE_13 0x13 //Òåêóùàÿ äàòà ìåíüøå äàòû ïîñëåäíåé çàïèñè â ÔÏ
#define FR_ERROR_CODE_14 0x14 //Îáëàñòü ñìåííûõ èòîãîâ ÔÏ ïåðåïîëíåíà
#define FR_ERROR_CODE_15 0x15 //Ñìåíà óæå îòêðûòà
#define FR_ERROR_CODE_16 0x16 //Ñìåíà íå îòêðûòà //
#define FR_ERROR_CODE_17 0x17 //Íîìåð ïåðâîé ñìåíû áîëüøå íîìåðà ïîñëåäíåé ñìåíû //
#define FR_ERROR_CODE_18 0x18 //Äàòà ïåðâîé ñìåíû áîëüøå äàòû ïîñëåäíåé ñìåíû //
#define FR_ERROR_CODE_19 0x19 //Íåò äàííûõ â ÔÏ //
#define FR_ERROR_CODE_1a 0x1A //Îáëàñòü ïåðåðåãèñòðàöèé â ÔÏ ïåðåïîëíåíà //
#define FR_ERROR_CODE_1b 0x1B //Çàâîäñêîé íîìåð íå ââåäåí //
#define FR_ERROR_CODE_1c 0x1C //Â çàäàííîì äèàïàçîíå åñòü ïîâðåæäåííàÿ çàïèñü //
#define FR_ERROR_CODE_1d 0x1D //Ïîâðåæäåíà ïîñëåäíÿÿ çàïèñü ñìåííûõ èòîãîâ //
#define FR_ERROR_CODE_1f 0x1F //Îòñóòñòâóåò ïàìÿòü ðåãèñòðîâ //
#define FR_ERROR_CODE_20 0x20 //Ïåðåïîëíåíèå äåíåæíîãî ðåãèñòðà ïðè äîáàâëåíèè //
#define FR_ERROR_CODE_21 0x21 //Âû÷èòàåìàÿ ñóììà áîëüøå ñîäåðæèìîãî äåíåæíîãî ðåãèñòðà //
#define FR_ERROR_CODE_22 0x22 //Íåâåðíàÿ äàòà //
#define FR_ERROR_CODE_23 0x23 //Íåò çàïèñè àêòèâèçàöèè //
#define FR_ERROR_CODE_24 0x24 //Îáëàñòü àêòèâèçàöèé ïåðåïîëíåíà //
#define FR_ERROR_CODE_25 0x25 //Íåò àêòèâèçàöèè ñ çàïðàøèâàåìûì íîìåðîì //
#define FR_ERROR_CODE_28 0x28 //Â ÔÐ áîëåå 2õ ñáîéíûõ çàïèñåé //
#define FR_ERROR_CODE_33 0x33 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå //
#define FR_ERROR_CODE_35 0x35 //Íåêîððåêòíûé ïàðàìåòð ïðè äàííûõ íàñòðîéêàõ //
#define FR_ERROR_CODE_36 0x36 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå äëÿ äàííîé ðåàëèçàöèè ÔÐ //
#define FR_ERROR_CODE_37 0x37 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîé ðåàëèçàöèè ÔÐ //
#define FR_ERROR_CODE_38 0x38 //Îøèáêà â ÏÇÓ //+
#define FR_ERROR_CODE_39 0x39 //Âíóòðåííÿÿ îøèáêà ÏÎ ÔÐ //
#define FR_ERROR_CODE_3a 0x3A //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî íàäáàâêàì â ñìåíå //
#define FR_ERROR_CODE_3c 0x3C //ÝÊËÇ: íåâåðíûé ðåãèñòðàöèîííûé íîìåð //
#define FR_ERROR_CODE_3e 0x3E //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî ñåêöèÿì â ñìåíå //
#define FR_ERROR_CODE_3f 0x3F //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî ñêèäêàì â ñìåíå //
#define FR_ERROR_CODE_40 0x40 //Ïåðåïîëíåíèå äèàïàçîíà ñêèäîê //
#define FR_ERROR_CODE_41 0x41 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû íàëè÷íûìè //
#define FR_ERROR_CODE_42 0x42 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 2 //
#define FR_ERROR_CODE_43 0x43 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 3 //
#define FR_ERROR_CODE_44 0x44 //Ïåðåïîëíåíèå äèàïàçîíà îïëàòû òèïîì 4
#define FR_ERROR_CODE_45 0x45 //Cóììà âñåõ òèïîâ îïëàòû ìåíüøå èòîãà ÷åêà //
#define FR_ERROR_CODE_46 0x46 //Íå õâàòàåò íàëè÷íîñòè â êàññå //
#define FR_ERROR_CODE_47 0x47 //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî íàëîãàì â ñìåíå //
#define FR_ERROR_CODE_48 0x48 //Ïåðåïîëíåíèå èòîãà ÷åêà //
#define FR_ERROR_CODE_4a 0x4A //Îòêðûò ÷åê - îïåðàöèÿ íåâîçìîæíà //
#define FR_ERROR_CODE_4b 0x4B //Áóôåð ÷åêà ïåðåïîëíåí //
#define FR_ERROR_CODE_4c 0x4C //Ïåðåïîëíåíèå íàêîïëåíèÿ ïî îáîðîòó íàëîãîâ â ñìåíå //
#define FR_ERROR_CODE_4d 0x4D //Âíîñèìàÿ áåçíàëè÷íîé îïëàòîé ñóììà áîëüøå ñóììû ÷åêà //
#define FR_ERROR_CODE_4e 0x4E //Ñìåíà ïðåâûñèëà 24 ÷àñà //
#define FR_ERROR_CODE_4f 0x4F //Íåâåðíûé ïàðîëü //
#define FR_ERROR_CODE_50 0x50 //Èäåò ïå÷àòü ïðåäûäóùåé êîìàíäû //
#define FR_ERROR_CODE_51 0x51 //Ïåðåïîëíåíèå íàêîïëåíèé íàëè÷íûìè â ñìåíå //
#define FR_ERROR_CODE_52 0x52 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 2 â ñìåíå //
#define FR_ERROR_CODE_53 0x53 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 3 â ñìåíå //
#define FR_ERROR_CODE_54 0x54 //Ïåðåïîëíåíèå íàêîïëåíèé ïî òèïó îïëàòû 4 â ñìåíå //
#define FR_ERROR_CODE_56 0x56 //Íåò äîêóìåíòà äëÿ ïîâòîðà //
#define FR_ERROR_CODE_57 0x57 //ÝÊËÇ: êîëè÷åñòâî çàêðûòûõ ñìåí íå ñîâïàäàåò ñ ÔÏ //
#define FR_ERROR_CODE_58 0x58 //Îæèäàíèå êîìàíäû ïðîäîëæåíèÿ ïå÷àòè //
#define FR_ERROR_CODE_59 0x59 //Äîêóìåíò îòêðûò äðóãèì îïåðàòîðîì //
#define FR_ERROR_CODE_5b 0x5B //Ïåðåïîëíåíèå äèàïàçîíà íàäáàâîê //
#define FR_ERROR_CODE_5c 0x5C //Ïîíèæåíî íàïðÿæåíèå 24Â
#define FR_ERROR_CODE_5d 0x5D //Òàáëèöà íå îïðåäåëåíà //
#define FR_ERROR_CODE_5e 0x5E //Íåêîððåêòíàÿ îïåðàöèÿ //
#define FR_ERROR_CODE_5f 0x5F //Îòðèöàòåëüíûé èòîã ÷åêà //
#define FR_ERROR_CODE_60 0x60 //Ïåðåïîëíåíèå ïðè óìíîæåíèè //
#define FR_ERROR_CODE_61 0x61 //Ïåðåïîëíåíèå äèàïàçîíà öåíû //
#define FR_ERROR_CODE_62 0x62 //Ïåðåïîëíåíèå äèàïàçîíà êîëè÷åñòâà //
#define FR_ERROR_CODE_63 0x63 //Ïåðåïîëíåíèå äèàïàçîíà îòäåëà //
#define FR_ERROR_CODE_64 0x64 //ÔÏ îòñóòñòâóåò //+
#define FR_ERROR_CODE_65 0x65 //Íå õâàòàåò äåíåã â ñåêöèè //
#define FR_ERROR_CODE_66 0x66 //Ïåðåïîëíåíèå äåíåã â ñåêöèè //
#define FR_ERROR_CODE_67 0x67 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_68 0x68 //Íå õâàòàåò äåíåã ïî îáîðîòó íàëîãîâ //
#define FR_ERROR_CODE_69 0x69 //Ïåðåïîëíåíèå äåíåã ïî îáîðîòó íàëîãîâ //
#define FR_ERROR_CODE_6a 0x6A //Îøèáêà ïèòàíèÿ â ìîìåíò îòâåòà ïî I
#define FR_ERROR_CODE_6b 0x6B //Íåò ÷åêîâîé ëåíòû //
#define FR_ERROR_CODE_6c 0x6C //Íåò êîíòðîëüíîé ëåíòû //
#define FR_ERROR_CODE_6d 0x6D //Íå õâàòàåò äåíåã ïî íàëîãó //
#define FR_ERROR_CODE_6e 0x6E //Ïåðåïîëíåíèå äåíåã ïî íàëîãó //
#define FR_ERROR_CODE_6f 0x6F //Ïåðåïîëíåíèå ïî âûïëàòå â ñìåíå //
#define FR_ERROR_CODE_70 0x70 //Ïåðåïîëíåíèå ÔÏ //
#define FR_ERROR_CODE_71 0x71 //Îøèáêà îòðåç÷èêà //+
#define FR_ERROR_CODE_72 0x72 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîì ïîäðåæèìå //
#define FR_ERROR_CODE_73 0x73 //Êîìàíäà íå ïîääåðæèâàåòñÿ â äàííîì ðåæèìå //
#define FR_ERROR_CODE_74 0x74 //Îøèáêà ÎÇÓ //
#define FR_ERROR_CODE_75 0x75 //Îøèáêà ïèòàíèÿ //+
#define FR_ERROR_CODE_76 0x76 //Îøèáêà ïðèíòåðà: íåò èìïóëüñîâ ñ òàõîãåíåðàòîðà //+
#define FR_ERROR_CODE_77 0x77 //Îøèáêà ïðèíòåðà: íåò ñèãíàëà ñ äàò÷èêîâ //+
#define FR_ERROR_CODE_78 0x78 //Çàìåíà ÏÎ //
#define FR_ERROR_CODE_79 0x79 //Çàìåíà ÔÏ //
#define FR_ERROR_CODE_7a 0x7A //Ïîëå íå ðåäàêòèðóåòñÿ
#define FR_ERROR_CODE_7b 0x7B //Îøèáêà îáîðóäîâàíèÿ //
#define FR_ERROR_CODE_7c 0x7C //Íå ñîâïàäàåò äàòà //
#define FR_ERROR_CODE_7d 0x7D //Íåâåðíûé ôîðìàò äàòû //
#define FR_ERROR_CODE_7e 0x7E //Íåâåðíîå çíà÷åíèå â ïîëå äëèíû //
#define FR_ERROR_CODE_7f 0x7F //Ïåðåïîëíåíèå äèàïàçîíà èòîãà ÷åêà //
#define FR_ERROR_CODE_80 0x80 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_81 0x81 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_82 0x82 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_83 0x83 //Îøèáêà ñâÿçè ñ ÔÏ //+
#define FR_ERROR_CODE_84 0x84 //Ïåðåïîëíåíèå íàëè÷íîñòè //
#define FR_ERROR_CODE_85 0x85 //Ïåðåïîëíåíèå ïî ïðîäàæàì â ñìåíå //
#define FR_ERROR_CODE_86 0x86 //Ïåðåïîëíåíèå ïî ïîêóïêàì â ñìåíå //
#define FR_ERROR_CODE_87 0x87 //Ïåðåïîëíåíèå ïî âîçâðàòàì ïðîäàæ â ñìåíå //
#define FR_ERROR_CODE_88 0x88 //Ïåðåïîëíåíèå ïî âîçâðàòàì ïîêóïîê â ñìåíå //
#define FR_ERROR_CODE_89 0x89 //Ïåðåïîëíåíèå ïî âíåñåíèþ â ñìåíå //
#define FR_ERROR_CODE_8a 0x8A //Ïåðåïîëíåíèå ïî íàäáàâêàì â ÷åêå //
#define FR_ERROR_CODE_8b 0x8B //Ïåðåïîëíåíèå ïî ñêèäêàì â ÷åêå //
#define FR_ERROR_CODE_8c 0x8C //Îòðèöàòåëüíûé èòîã íàäáàâêè â ÷åêå //
#define FR_ERROR_CODE_8d 0x8D //Îòðèöàòåëüíûé èòîã ñêèäêè â ÷åêå //
#define FR_ERROR_CODE_8e 0x8E //Íóëåâîé èòîã ÷åêà //
#define FR_ERROR_CODE_8f 0x8F //Êàññà íå ôèñêàëèçèðîâàíà // //
#define FR_ERROR_CODE_90 0x90 //Ïîëå ïðåâûøàåò ðàçìåð, óñòàíîâëåííûé â íàñòðîéêàõ
#define FR_ERROR_CODE_91 0x91 //Âûõîä çà ãðàíèöó ïîëÿ ïå÷àòè ïðè äàííûõ íàñòðîéêàõ øðèôòà
#define FR_ERROR_CODE_92 0x92 //Íàëîæåíèå ïîëåé
#define FR_ERROR_CODE_93 0x93 //Âîññòàíîâëåíèå ÎÇÓ ïðîøëî óñïåøíî
#define FR_ERROR_CODE_94 0x94 //Èñ÷åðïàí ëèìèò îïåðàöèé â ÷åêå
#define FR_ERROR_CODE_a0 0xA0 //Îøèáêà ñâÿçè ñ ÝÊËÇ
#define FR_ERROR_CODE_a1 0xA1 //ÝÊËÇ îòñóòñòâóåò
#define FR_ERROR_CODE_a2 0xA2 //ÝÊËÇ: Íåêîððåêòíûé ôîðìàò èëè ïàðàìåòð êîìàíäû
#define FR_ERROR_CODE_a3 0xA3 //Íåêîððåêòíîå ñîñòîÿíèå ÝÊËÇ
#define FR_ERROR_CODE_a4 0xA4 //Àâàðèÿ ÝÊËÇ
#define FR_ERROR_CODE_a5 0xA5 //Àâàðèÿ ÊÑ â ñîñòàâå ÝÊËÇ
#define FR_ERROR_CODE_a6 0xA6 //Èñ÷åðïàí âðåìåííîé ðåñóðñ ÝÊËÇ
#define FR_ERROR_CODE_a7 0xA7 //ÝÊËÇ ïåðåïîëíåíà
#define FR_ERROR_CODE_a8 0xA8 //ÇÊËÇ: Íåâåðíûå äàòà è âðåìÿ
#define FR_ERROR_CODE_a9 0xA9 //ÝÊËÇ: Íåò çàïðîøåííûõ äàííûõ
#define FR_ERROR_CODE_aa 0xAA //Ïåðåïîëíåíèå ÝÊËÇ (îòðèöàòåëüíûé èòîã äîêóìåíòà)
#define FR_ERROR_CODE_b0 0xB0 //ÝÊËÇ: Ïåðåïîëíåíèå â ïàðàìåòðå êîëè÷åñòâî
#define FR_ERROR_CODE_b1 0xB1 //ÝÊËÇ: Ïåðåïîëíåíèå â ïàðàìåòðå ñóììà
#define FR_ERROR_CODE_b2 0xB2 //ÝÊËÇ: Óæå àêòèâèçèðîâàíà
#define FR_ERROR_CODE_c0 0xC0 //Êîíòðîëü äàòû è âðåìåíè (ïîäòâåðäèòå äàòó è âðåìÿ)
#define FR_ERROR_CODE_c1 0xC1 //ÝÊËÇ: ñóòî÷íûé îò÷?ò ñ ãàøåíèåì ïðåðâàòü íåëüçÿ
#define FR_ERROR_CODE_c2 0xC2 //Ïðåâûøåíèå íàïðÿæåíèÿ â áëîêå ïèòàíèÿ
#define FR_ERROR_CODE_c3 0xC3 //Íåñîâïàäåíèå èòîãîâ ÷åêà è ÝÊËÇ
#define FR_ERROR_CODE_c4 0xC4 //Íåñîâïàäåíèå íîìåðîâ ñìåí
//#define FR_ERROR_CODE_c5 0xC5 //Áóôåð ïîäêëàäíîãî äîêóìåíòà ïóñò
//#define FR_ERROR_CODE_c6 0xC6 //Ïîäêëàäíîé äîêóìåíò îòñóòñòâóåò //
//#define FR_ERROR_CODE_c7 0xC7 //Ïîëå íå ðåäàêòèðóåòñÿ â äàííîì ðåæèìå
//#define FR_ERROR_CODE_c8 0xC8 //Îòñóòñòâóþò //èìïóëüñû îò òàõîäàò÷èêà
#define FR_ERROR_NUMBER 143
// ñòðóêòóðà çàâîäñêîãî íîìåðà è ÐÍÌ
#pragma pack(1)
typedef struct{
CPU_INT08U FactoryNumber[7];
CPU_INT08U RNM[7];
}TFiscFactoryNumber;
// ñòðóêòóðà êîðîòêîãî ñîñòîÿíèÿ
#pragma pack(1)
typedef struct{
CPU_INT08U OperatorNumber; // íîìåð îïåðàòîðà 1..30
CPU_INT16U Flags; // ôëàãè ÔÐ
/*
Ôëàãè ÔÐ Áèòîâîå ïîëå (íàçíà÷åíèå áèò):
0 Ðóëîí îïåðàöèîííîãî æóðíàëà (0 íåò, 1 åñòü)
1 Ðóëîí ÷åêîâîé ëåíòû (0 íåò, 1 åñòü)
2 Âåðõíèé äàò÷èê ïîäêëàäíîãî äîêóìåíòà (0 íåò, 1 äà)
3 Íèæíèé äàò÷èê ïîäêëàäíîãî äîêóìåíòà (0 íåò, 1 äà)
4 Ïîëîæåíèå äåñÿòè÷íîé òî÷êè (0 0 çíàêîâ, 1 2 çíàêà)
5 ÝÊËÇ (0 íåò, 1 åñòü)
6 Îïòè÷åñêèé äàò÷èê îïåðàöèîííîãî æóðíàëà (0 áóìàãè íåò, 1 áóìàãà åñòü)
7 Îïòè÷åñêèé äàò÷èê ÷åêîâîé ëåíòû (0 áóìàãè íåò, 1 áóìàãà åñòü)
8 Ðû÷àã òåðìîãîëîâêè êîíòðîëüíîé ëåíòû (0 ïîäíÿò, 1 îïóùåí)
9 Ðû÷àã òåðìîãîëîâêè ÷åêîâîé ëåíòû (0 ïîäíÿò, 1 îïóùåí)
10 Êðûøêà êîðïóñà ÔÐ (0 îïóùåíà, 1 ïîäíÿòà)
11 Äåíåæíûé ÿùèê (0 çàêðûò, 1 îêðûò)
12à Îòêàç ïðàâîãî äàò÷èêà ïðèíòåðà (0 íåò, 1 äà)
12á Áóìàãà íà âõîäå â ïðåçåíòåð (0 íåò, 1 äà)
13à Îòêàç ëåâîãî äàò÷èêà ïðèíòåðà (0 íåò, 1 äà)
13á Áóìàãà íà âûõîäå èç ïðåçåíòåðà (0 íåò, 1 äà)
14 ÝÊËÇ ïî÷òè çàïîëíåíà (0 íåò, 1 äà)
15à Óâåëè÷åííàÿ òî÷íîñòü êîëè÷åñòâà (0 íîðìàëüíàÿ òî÷íîñòü, 1 óâåëè÷åííàÿ
òî÷íîñòü) [äëÿ ÊÊÌ áåç ÝÊËÇ]. Äëÿ ÊÊÌ ñ ÝÊËÇ (1 íîðìàëüíàÿ òî÷íîñòü, 0
óâåëè÷åííàÿ òî÷íîñòü)
15á Áóôåð ïðèíòåðà íåïóñò (0 ïóñò, 1 íåïóñò)
*/
CPU_INT08U Mode; // ðåæèì ÔÐ
CPU_INT08U SubMode; // ïîäðåæèì ÔÐ
CPU_INT08U BillOperationNumber_L; // êîë-âî îïðåàöèé â ÷åêå, ìë. áàéò
CPU_INT08U BatteryVoltage; // íàïðÿæåíèå ðåçåðâíîé áàòàðåè
CPU_INT08U PowerSupplyVoltage; // íàïðÿæåíèå èñòî÷íèêà ïèòàíèÿ
CPU_INT08U ErrorCodeFP; // êîä îøèáêè ÔÏ
CPU_INT08U ErrorCodeEKLZ; // êîä îøèáêè ÝÊËÇ
CPU_INT08U BillOperationNumber_H; // êîë-âî îïðåàöèé â ÷åêå, ñò. áàéò
CPU_INT08U Reserve[3]; // ðåçåðâ
}TFiscShortStatus;
// ñòðóêòóðà ïîëíîãî ñîñòîÿíèÿ
#pragma pack(1)
typedef struct{
/*
Ïîðÿäêîâûé íîìåð îïåðàòîðà (1 áàéò) 1…30
Âåðñèÿ ÏÎ ÔÐ (2 áàéòà)
Ñáîðêà ÏÎ ÔÐ (2 áàéòà)
Äàòà ÏÎ ÔÐ (3 áàéòà) ÄÄ-ÌÌ-ÃÃ
Íîìåð â çàëå (1 áàéò)
Ñêâîçíîé íîìåð òåêóùåãî äîêóìåíòà (2 áàéòà)
Ôëàãè ÔÐ (2 áàéòà)
Ðåæèì ÔÐ (1 áàéò)
Ïîäðåæèì ÔÐ (1 áàéò)
Ïîðò ÔÐ (1 áàéò)
Âåðñèÿ ÏÎ ÔÏ (2 áàéòà)
Ñáîðêà ÏÎ ÔÏ (2 áàéòà)
Äàòà ÏÎ ÔÏ (3 áàéòà) ÄÄ-ÌÌ-ÃÃ
Äàòà (3 áàéòà) ÄÄ-ÌÌ-ÃÃ
Âðåìÿ (3 áàéòà) ××-ÌÌ-ÑÑ
Ôëàãè ÔÏ (1 áàéò)
Áèòîâîå ïîëå (íàçíà÷åíèå áèò):
0 ÔÏ 1 (0 –íåò, 1 åñòü)
1 ÔÏ 2 (0 –íåò, 1 åñòü)
2 Ëèöåíçèÿ (0 íå ââåäåíà, 1 ââåäåíà)
3 Ïåðåïîëíåíèå ÔÏ (0 íåò, 1 åñòü)
4 Áàòàðåÿ ÔÏ (0 >80%, 1 <80%)
5 Ïîñëåäíÿÿ çàïèñü ÔÏ (0 èñïîð÷åíà, 1 êîððåêòíà)
6 Ñìåíà â ÔÏ (0 çàêðûòà, 1 îòêðûòà)
7 24 ÷àñà â ÔÏ (0 íå êîí÷èëèñü, 1 êîí÷èëèñü)
Çàâîäñêîé íîìåð (4 áàéòà)
Íîìåð ïîñëåäíåé çàêðûòîé ñìåíû (2 áàéòà)
Êîëè÷åñòâî ñâîáîäíûõ çàïèñåé â ÔÏ (2 áàéòà)
Êîëè÷åñòâî ïåðåðåãèñòðàöèé (ôèñêàëèçàöèé) (1 áàéò)
Êîëè÷åñòâî îñòàâøèõñÿ ïåðåðåãèñòðàöèé (ôèñêàëèçàöèé) (1 áàéò)
ÈÍÍ (6 áàéò)
*/
CPU_INT08U OperatorNumber; // íîìåð îïåðàòîðà 1..30
CPU_INT08U version[4];
CPU_INT08U version_date[3];
CPU_INT08U nomer_v_zale;
CPU_INT16U document_number;
CPU_INT16U Flags; // ôëàãè ÔÐ
CPU_INT08U Mode; // ðåæèì ÔÐ
CPU_INT08U SubMode; // ïîäðåæèì ÔÐ
CPU_INT08U port;
CPU_INT08U ver_fp[4];
CPU_INT08U date_fp[3];
CPU_INT08U date[3];
CPU_INT08U time[3];
CPU_INT08U fp_flags;
CPU_INT32U FactoryNumber;
CPU_INT16U LastSmena;
CPU_INT16U FpFreePlace;
CPU_INT08U perereg;
CPU_INT08U perereg_free;
CPU_INT08U inn[6];
}TFiscFullStatus;
// ñòðóêòóðà èíôîðìàöèè îá óñòðîéñòâå
#pragma pack(1)
typedef struct{
CPU_INT08U Type; // Òèï óñòðîéñòâà (1 áàéò) 0…255
CPU_INT08U Subtype; // Ïîäòèï óñòðîéñòâà (1 áàéò) 0…255
CPU_INT08U ProtocolVersion; // Âåðñèÿ ïðîòîêîëà äëÿ äàííîãî óñòðîéñòâà (1 áàéò) 0…255
CPU_INT08U ProtocolSubVersion; // Ïîäâåðñèÿ ïðîòîêîëà äëÿ äàííîãî óñòðîéñòâà (1 áàéò) 0…255
CPU_INT08U Model; // Ìîäåëü óñòðîéñòâà (1 áàéò) 0…255
CPU_INT08U Language; // ßçûê óñòðîéñòâà (1 áàéò) 0…255 ðóññêèé 0; àíãëèéñêèé 1;
#define FISC_LANG_RUS 0
#define FISC_LANG_ENG 1
CPU_INT08U Name[32]; // Íàçâàíèå óñòðîéñòâà ñòðîêà ñèìâîëîâ â êîäèðîâêå WIN1251. Êîëè÷åñòâî
// áàéò, îòâîäèìîå ïîä íàçâàíèå óñòðîéñòâà, îïðåäåëÿåòñÿ â êàæäîì êîíêðåòíîì
// ñëó÷àå ñàìîñòîÿòåëüíî ðàçðàáîò÷èêàìè óñòðîéñòâà (X áàéò)
}TFiscDevType;
extern TFiscDevType FiscDevInfo;
// ôóíêöèè
extern int FiscPoll(void);
extern int FiscGetFactoryNumber(CPU_INT32U pass, TFiscFactoryNumber* fnum, CPU_INT08U* err);
extern int FiscGetShortStatus(CPU_INT32U pass, TFiscShortStatus* stat, CPU_INT08U* err);
extern int FiscGetFullStatus(CPU_INT32U pass, TFiscFullStatus* stat, CPU_INT08U* err);
extern int FiscPrintBoldString(CPU_INT32U pass, CPU_INT08U flags, CPU_INT08U* str, CPU_INT08U* err);
extern int FiscBeep(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscPrintString(CPU_INT32U pass, CPU_INT08U flags, CPU_INT08U* str, CPU_INT08U* err);
extern int FiscPrintDocHeader(CPU_INT32U pass, CPU_INT08U* str, CPU_INT16U number, CPU_INT08U* err);
extern int FiscGetMoneyReg(CPU_INT32U pass, CPU_INT08U reg, CPU_INT64U* value, CPU_INT08U* err);
extern int FiscGetOperReg(CPU_INT32U pass, CPU_INT08U reg, CPU_INT16U* value, CPU_INT08U* err);
extern int FiscBillCut(CPU_INT32U pass, CPU_INT08U type, CPU_INT08U* err);
extern int FiscPullOutTape(CPU_INT32U pass, CPU_INT08U flags, CPU_INT08U strnum, CPU_INT08U* err);
extern int FiscEjectUnderlayDoc(CPU_INT32U pass, CPU_INT08U dir, CPU_INT08U* err);
extern int FiscPrintStringByFont(CPU_INT32U pass, CPU_INT08U flags, CPU_INT08U font, CPU_INT08U* str, CPU_INT08U* err);
extern int FiscPrintDayReportNoClear(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPrintDayReportClear(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPrintSectionReport(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPrintTaxesReport(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscMakeDeposit(CPU_INT32U pass, CPU_INT32U sum, CPU_INT16U* doc, CPU_INT08U* err);
extern int FiscMakePayout(CPU_INT32U pass, CPU_INT32U sum, CPU_INT16U* doc, CPU_INT08U* err);
extern int FiscPrintCliche(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscEndDoc(CPU_INT32U pass, CPU_INT08U param, CPU_INT08U* err);
extern int FiscPrintAdvText(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscGetDeviceType(TFiscDevType* dev, CPU_INT08U* err);
extern int FiscPrintContinue(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscOpenBill(CPU_INT32U pass, CPU_INT08U type, CPU_INT08U* err);
extern int FiscMakeSell(CPU_INT32U pass, CPU_INT64U *count, CPU_INT64U *price, CPU_INT08U department, CPU_INT08U* tax, char* text, CPU_INT08U* err);
extern int FiscCloseBill(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U* tax, char* text, CPU_INT08U* err);
extern int FiscPrintDayReportToBuf(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPrintDayReportsFromBuf(CPU_INT32U admpass, CPU_INT08U* err);
extern int FiscPollExt(void);
#endif //#ifndef _FISCAL_H_