Dmitriy 5fe1e5d358 первый коммит
первый коммит
2021-02-08 21:10:39 +03:00

365 lines
18 KiB
C
Raw 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_EXTENDED_CMD 0xFF
#define FISC_OPEN_DAY 0xE0
#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 //Íåèçâåñòíàÿ êîìàíäà
#define FR_ERROR_CODE_2 0x2 //Íåâåðíîå ñîñòîÿíèå ÔÍ
#define FR_ERROR_CODE_3 0x3 //Îøèáêà ÔÍ
#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_10 0x10 //Ïðåâûøåíèå ðàçìåðîâ TLV äàííûõ
#define FR_ERROR_CODE_11 0x11 //Íåò òðàíñïîðòíîãî ñîåäèíåíèÿ
#define FR_ERROR_CODE_12 0x12 //Èñ÷åðïàí ðåñóðñ ÊÑ
#define FR_ERROR_CODE_14 0x14 //Èñ÷åðïàí ðåñóðñ õðàíåíèÿ
#define FR_ERROR_CODE_15 0x15 //Èñ÷åðïàí ðåñóðñ Îæèäàíèÿ ïåðåäà÷è ñîîáùåíèÿ
#define FR_ERROR_CODE_16 0x16 //Ïðîäîëæèòåëüíîñòü ñìåíû áîëåå 24 ÷àñîâ
#define FR_ERROR_CODE_17 0x17 //Íåâåðíàÿ ðàçíèöà âî âðåìåíè ìåæäó 2 îïåðàöèìè
#define FR_ERROR_CODE_20 0x20 //Ñîîáùåíèå îò ÎÔÄ íå ìîæåò áûòü ïðèíÿòî
#define FR_ERROR_CODE_2F 0x2F //Òàéìàóò îáìåíà ñ ÔÍ
#define FR_ERROR_CODE_30 0x30 //ÔÍ íå îòâå÷àåò
#define FR_ERROR_CODE_33 0x33 //Íåêîððåêòíûå ïàðàìåòðû â êîìàíäå
#define FR_ERROR_CODE_34 0x34 //Íåò äàííûõ
#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_3D 0x3D //Ñìåíà íå îòêðûòà îïåðàöèÿ íå âîçìîæíà
#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_49 0x49 //Îïåðàöèÿ íåâîçìîæíà â îòêðûòîì ÷åêå äàííîãî òèïà
#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_55 0x55 //×åê çàêðûò îïåðàöèÿ íåâîçìîæíà
#define FR_ERROR_CODE_56 0x56 //Íåò äîêóìåíòà äëÿ ïîâòîðà
#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_65 0x65 //Íå õâàòàåò äåíåã â ñåêöèè
#define FR_ERROR_CODE_66 0x66 //Ïåðåïîëíåíèå äåíåã â ñåêöèè
#define FR_ERROR_CODE_68 0x68 //Íå õâàòàåò äåíåã ïî îáîðîòó íàëîãîâ
#define FR_ERROR_CODE_69 0x69 //Ïåðåïîëíåíèå äåíåã ïî îáîðîòó íàëîãîâ
#define FR_ERROR_CODE_6A 0x6A //Îøèáêà ïèòàíèÿ â ìîìåíò îòâåòà ïî I2C
#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_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_77 0x77 //Îøèáêà ïðèíòåðà: íåò ñèãíàëà ñ äàò÷èêîâ
#define FR_ERROR_CODE_78 0x78 //Çàìåíà ÏÎ
#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_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_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_C0 0xC0 //Êîíòðîëü äàòû è âðåìåíè (ïîäòâåðäèòå äàòó è âðåìÿ)
#define FR_ERROR_CODE_C2 0xC2 //Ïðåâûøåíèå íàïðÿæåíèÿ â áëîêå ïèòàíèÿ
#define FR_ERROR_CODE_C4 0xC4 //Íåñîâïàäåíèå íîìåðîâ ñìåí
#define FR_ERROR_CODE_C7 0xC7 //Ïîëå íå ðåäàêòèðóåòñÿ â äàííîì ðåæèìå
#define FR_ERROR_CODE_C8 0xC8 //Îòñóòñòâóþò èìïóëüñû îò òàõîäàò÷èêà
#define FR_ERROR_NUMBER 109
// ñòðóêòóðà çàâîäñêîãî íîìåðà è ÐÍÌ
#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);
extern int FiscOpenDay(CPU_INT32U pass, CPU_INT08U* err);
extern int FiscMakeSellV2(CPU_INT32U pass, CPU_INT64U *count, CPU_INT64U *price, CPU_INT08U department, CPU_INT08U* tax, CPU_INT08U subj, char* text, CPU_INT08U* err);
extern int FiscCloseBillV2(CPU_INT32U pass, CPU_INT64U *cash, CPU_INT08U taxsys, char* text, CPU_INT08U* err);
#endif //#ifndef _FISCAL_H_