Last active
February 26, 2026 08:06
-
-
Save kashiash/6803cd6dd1c903f7f193a08e25479216 to your computer and use it in GitHub Desktop.
posnet thermal hx by tcpip with c#
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using NUnit.Framework; | |
| using System.Diagnostics; | |
| using System.Text; | |
| using Shared.Services.Printers; | |
| using Microsoft.Extensions.Hosting; | |
| using System.Net.Sockets; | |
| using System.IO.Ports; | |
| using System.Collections; | |
| using System.IO; | |
| namespace PosnetTests | |
| { | |
| public class Tests | |
| { | |
| string host = "192.168.50.166"; | |
| int port = 6666; | |
| string[] testParagon = { | |
| "\u0002trinit\u0009#911D\u0003", | |
| "\u0002trline\u0009naChleb\u0009vt1\u0009pr200\u0009#B23A\u0003", | |
| "\u0002trpayment\u0009ty0\u0009wa200\u0009#5EF7\u0003", | |
| "\u0002trend\u0009#2902\u0003" | |
| }; | |
| const string STX = "\u0002"; | |
| const string TAB = "\u0009"; | |
| const string ETX = "\u0003"; | |
| const string LF = "\u000A"; | |
| [Test] | |
| public void CrcTest() | |
| { | |
| var command1 = "trinit\u0009bm0\u0009"; | |
| var crc1 = LiczSumeKontrolnaZInstrukcji(command1); | |
| Assert.AreEqual("4825", crc1); | |
| var command1b = $"trinit{TAB}bm0{TAB}"; | |
| Assert.AreEqual(command1, command1b); | |
| var crc1b = LiczSumeKontrolnaZInstrukcji(command1b); | |
| Assert.AreEqual("4825", crc1b); | |
| string[] command1cArr = { "trinit", "bm0" }; | |
| var command1c = fullCommand(command1cArr); | |
| Assert.AreEqual(command1, command1c); | |
| var crc3 = LiczSumeKontrolnaZInstrukcji(command1c); | |
| Assert.AreEqual("4825", crc3); | |
| var command2 = "trinit\u0009"; | |
| var crc2 = LiczSumeKontrolnaZInstrukcji(command2); | |
| Assert.AreEqual("911D", crc2); | |
| var command2b = $"trinit{TAB}"; | |
| var crc2b = LiczSumeKontrolnaZInstrukcji(command2b); | |
| Assert.AreEqual("911D", crc2b); | |
| var commandRtcGet = $"rtcget{TAB}"; | |
| var crcrtc = LiczSumeKontrolnaZInstrukcji(commandRtcGet); | |
| Assert.AreEqual("7D61", crcrtc); | |
| } | |
| string fullCommand(string[] command) | |
| { | |
| string joinedString = string.Join(TAB, command); | |
| return $"{joinedString}{TAB}"; | |
| } | |
| string fullCommandCrced(string[] command) | |
| { | |
| string joinedString = fullCommand(command); | |
| string crc = LiczSumeKontrolnaZInstrukcji(joinedString); | |
| return $"{STX}{joinedString}#{crc}{ETX}"; | |
| } | |
| string fullCommandCrced(string command) | |
| { | |
| string crc = LiczSumeKontrolnaZInstrukcji($"{command}{TAB}"); | |
| return $"{STX}{command}{TAB}#{crc}{ETX}"; | |
| } | |
| [Test] | |
| public void FullComandCrcTestTest() | |
| { | |
| string[] lineCommand = { "trline", "naChleb", "vt1", "pr200" }; | |
| var fullLineCommand = fullCommandCrced(lineCommand); | |
| Assert.AreEqual("\u0002trline\u0009naChleb\u0009vt1\u0009pr200\u0009#B23A\u0003", fullLineCommand); | |
| } | |
| [SetUp] | |
| public void Setup() | |
| { | |
| } | |
| [Test] | |
| public void AnulowanieTransakcjiTest() | |
| { | |
| using (TcpClient client = new TcpClient(host, port)) | |
| { | |
| // Uzyskanie strumienia sieciowego | |
| using (NetworkStream stream = client.GetStream()) | |
| { | |
| var endLineCommand = fullCommandCrced(new string[] { "prncancel" }); | |
| SendCommand(endLineCommand, stream); | |
| } | |
| } | |
| } | |
| [Test] | |
| public void SetFooterTest() | |
| { | |
| using (TcpClient client = new TcpClient(host, port)) | |
| { | |
| // Uzyskanie strumienia sieciowego | |
| using (NetworkStream stream = client.GetStream()) | |
| { | |
| // "\u0002trinit\u0009#911D\u0003", | |
| SendCommand(stream, new string[] { "ftrinfoset", $"tx&c&bPILES? NIE JEDZ!&c&b{LF}&c&b NIE PILES? WYPIJ!&c&b{LF}&c&HFLEETMAN RULEZ&H&c" }); | |
| } | |
| } | |
| } | |
| [Test] | |
| public void SimpleRecipetest() | |
| { | |
| using (TcpClient client = new TcpClient(host, port)) | |
| { | |
| // Uzyskanie strumienia sieciowego | |
| using (NetworkStream stream = client.GetStream()) | |
| { | |
| // "\u0002trinit\u0009#911D\u0003", | |
| SendCommand(stream, new string[] { "trinit", "bm1" }); | |
| //"\u0002trline\u0009naChleb\u0009vt1\u0009pr200\u0009#B23A\u0003", | |
| SendCommand(stream, new string[] { "trline", "naPiwerko", "vt1", "pr200" }); | |
| SendCommand(stream, new string[] { "trline", "naOrzeszki", "vt1", "pr300" }); | |
| SendCommand(stream, new string[] { "trline", "naSledzik", "vt0", "pr500" }); | |
| SendCommand(stream, new string[] { "trline", "naFlaszeczka", "vt2", "pr2330" }); | |
| //"\u0002trpayment\u0009ty0\u0009wa200\u0009#5EF7\u0003", | |
| SendCommand(stream, new string[] { "trpayment", "ty0", "wa1000" }); | |
| SendCommand(stream, new string[] { "trpayment", "ty2", "wa200" }); | |
| SendCommand(stream, new string[] { "trpayment", "ty3", "wa1800" }); | |
| // SendCommand(stream, new string[] { "trpayment", "ty4", "wa330" }); | |
| // SendCommand(stream, new string[] { "trpayment", "ty5", "wa330" }); | |
| // SendCommand(stream, new string[] { "trpayment", "ty6", "wa330" }); | |
| // SendCommand(stream, new string[] { "trpayment", "ty7", "wa330" }); | |
| SendCommand(stream, new string[] { "trpayment", "ty8", "wa330" }); | |
| //"\u0002trend\u0009#2902\u0003" | |
| SendCommand(stream, new string[] { "trend", "to3330", "fp3330" }); | |
| } | |
| } | |
| } | |
| enum paymentType | |
| { | |
| Gotowka = 0, | |
| Karta = 2, | |
| Czeka = 3, | |
| Bon = 4, | |
| Kredyt = 5, | |
| Inna = 6, | |
| Voucher = 7, | |
| Przelew = 8 | |
| } | |
| private void SendCommand(NetworkStream stream, string[] command) | |
| { | |
| SendCommand(fullCommandCrced(command), stream); | |
| } | |
| [Test] | |
| public void EthernetTest() | |
| { | |
| string[] command = { "getrtc", "ln6" }; | |
| string dailyRep = "dailyrep"; | |
| string command3 = "\u0002trinit\u0009#911D\u0003"; | |
| using (TcpClient client = new TcpClient(host, port)) | |
| { | |
| // Uzyskanie strumienia sieciowego | |
| using (NetworkStream stream = client.GetStream()) | |
| { | |
| string[] startCommand = { "trinit", "bm0" }; | |
| SendCommand(fullCommandCrced(startCommand), stream); | |
| SendCommand(fullCommandCrced(new string[] { "trline", "naChleb", "vt0", "pr200" }), stream); | |
| SendCommand(fullCommandCrced(new string[] { "trline", "naPiwo", "vt1", "pr200" }), stream); | |
| SendCommand(fullCommandCrced(new string[] { "trline", "naPampers", "vt2", "pr200" }), stream); | |
| SendCommand(fullCommandCrced(new string[] { "trline", "naWhisky", "vt3", "pr200" }), stream); | |
| // "\u0002trpayment\u0009ty0\u0009wa200\u0009#5EF7\u0003", | |
| var paymentLineCommand = fullCommandCrced(new string[] { "trpayment", "ty0", "wa500" }); | |
| SendCommand(paymentLineCommand, stream); | |
| var paymentLineCommand2 = fullCommandCrced(new string[] { "trpayment", "ty2", "wa100" }); | |
| SendCommand(paymentLineCommand2, stream); | |
| var paymentLineCommand3 = fullCommandCrced(new string[] { "trpayment", "ty8", "wa200" }); | |
| SendCommand(paymentLineCommand3, stream); | |
| // "\u0002trend\u0009#2902\u0003" | |
| var endLineCommand = fullCommandCrced(new string[] { "trend", "to800" }); | |
| SendCommand(endLineCommand, stream); | |
| } | |
| } | |
| } | |
| private static void SendCommand(string dataToSend, NetworkStream stream) | |
| { | |
| // Konwersja danych na tablicę bajtów | |
| byte[] data = Encoding.UTF8.GetBytes(dataToSend); | |
| // Wysyłanie danych | |
| stream.Write(data, 0, data.Length); | |
| //foreach (byte b in data) | |
| //{ | |
| // Console.Write($"{b:X2} "); | |
| //} | |
| Console.WriteLine(); | |
| Console.WriteLine($"Wysłano: {dataToSend}"); | |
| // Odbieranie odpowiedzi | |
| byte[] buffer = new byte[1024]; | |
| int bytesRead = stream.Read(buffer, 0, buffer.Length); | |
| string response = Encoding.UTF8.GetString(buffer, 0, bytesRead); | |
| //foreach (byte b in buffer) | |
| //{ | |
| // Console.Write($"{b:X2} "); | |
| //} | |
| Console.WriteLine(); | |
| Console.WriteLine($"Odpowiedź od serwera: {response}"); | |
| } | |
| private string LiczSumeKontrolnaZInstrukcji(string ciagZnakow) | |
| { | |
| byte[] crc16htab = | |
| { | |
| 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, | |
| 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, | |
| 0x12, 0x02, 0x32, 0x22, 0x52, 0x42, 0x72, 0x62, | |
| 0x93, 0x83, 0xb3, 0xa3, 0xd3, 0xc3, 0xf3, 0xe3, | |
| 0x24, 0x34, 0x04, 0x14, 0x64, 0x74, 0x44, 0x54, | |
| 0xa5, 0xb5, 0x85, 0x95, 0xe5, 0xf5, 0xc5, 0xd5, | |
| 0x36, 0x26, 0x16, 0x06, 0x76, 0x66, 0x56, 0x46, | |
| 0xb7, 0xa7, 0x97, 0x87, 0xf7, 0xe7, 0xd7, 0xc7, | |
| 0x48, 0x58, 0x68, 0x78, 0x08, 0x18, 0x28, 0x38, | |
| 0xc9, 0xd9, 0xe9, 0xf9, 0x89, 0x99, 0xa9, 0xb9, | |
| 0x5a, 0x4a, 0x7a, 0x6a, 0x1a, 0x0a, 0x3a, 0x2a, | |
| 0xdb, 0xcb, 0xfb, 0xeb, 0x9b, 0x8b, 0xbb, 0xab, | |
| 0x6c, 0x7c, 0x4c, 0x5c, 0x2c, 0x3c, 0x0c, 0x1c, | |
| 0xed, 0xfd, 0xcd, 0xdd, 0xad, 0xbd, 0x8d, 0x9d, | |
| 0x7e, 0x6e, 0x5e, 0x4e, 0x3e, 0x2e, 0x1e, 0x0e, | |
| 0xff, 0xef, 0xdf, 0xcf, 0xbf, 0xaf, 0x9f, 0x8f, | |
| 0x91, 0x81, 0xb1, 0xa1, 0xd1, 0xc1, 0xf1, 0xe1, | |
| 0x10, 0x00, 0x30, 0x20, 0x50, 0x40, 0x70, 0x60, | |
| 0x83, 0x93, 0xa3, 0xb3, 0xc3, 0xd3, 0xe3, 0xf3, | |
| 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, | |
| 0xb5, 0xa5, 0x95, 0x85, 0xf5, 0xe5, 0xd5, 0xc5, | |
| 0x34, 0x24, 0x14, 0x04, 0x74, 0x64, 0x54, 0x44, | |
| 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, | |
| 0x26, 0x36, 0x06, 0x16, 0x66, 0x76, 0x46, 0x56, | |
| 0xd9, 0xc9, 0xf9, 0xe9, 0x99, 0x89, 0xb9, 0xa9, | |
| 0x58, 0x48, 0x78, 0x68, 0x18, 0x08, 0x38, 0x28, | |
| 0xcb, 0xdb, 0xeb, 0xfb, 0x8b, 0x9b, 0xab, 0xbb, | |
| 0x4a, 0x5a, 0x6a, 0x7a, 0x0a, 0x1a, 0x2a, 0x3a, | |
| 0xfd, 0xed, 0xdd, 0xcd, 0xbd, 0xad, 0x9d, 0x8d, | |
| 0x7c, 0x6c, 0x5c, 0x4c, 0x3c, 0x2c, 0x1c, 0x0c, | |
| 0xef, 0xff, 0xcf, 0xdf, 0xaf, 0xbf, 0x8f, 0x9f, | |
| 0x6e, 0x7e, 0x4e, 0x5e, 0x2e, 0x3e, 0x0e, 0x1e | |
| }; | |
| byte[] crc16ltab = | |
| { | |
| 0x00, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, | |
| 0x08, 0x29, 0x4a, 0x6b, 0x8c, 0xad, 0xce, 0xef, | |
| 0x31, 0x10, 0x73, 0x52, 0xb5, 0x94, 0xf7, 0xd6, | |
| 0x39, 0x18, 0x7b, 0x5a, 0xbd, 0x9c, 0xff, 0xde, | |
| 0x62, 0x43, 0x20, 0x01, 0xe6, 0xc7, 0xa4, 0x85, | |
| 0x6a, 0x4b, 0x28, 0x09, 0xee, 0xcf, 0xac, 0x8d, | |
| 0x53, 0x72, 0x11, 0x30, 0xd7, 0xf6, 0x95, 0xb4, | |
| 0x5b, 0x7a, 0x19, 0x38, 0xdf, 0xfe, 0x9d, 0xbc, | |
| 0xc4, 0xe5, 0x86, 0xa7, 0x40, 0x61, 0x02, 0x23, | |
| 0xcc, 0xed, 0x8e, 0xaf, 0x48, 0x69, 0x0a, 0x2b, | |
| 0xf5, 0xd4, 0xb7, 0x96, 0x71, 0x50, 0x33, 0x12, | |
| 0xfd, 0xdc, 0xbf, 0x9e, 0x79, 0x58, 0x3b, 0x1a, | |
| 0xa6, 0x87, 0xe4, 0xc5, 0x22, 0x03, 0x60, 0x41, | |
| 0xae, 0x8f, 0xec, 0xcd, 0x2a, 0x0b, 0x68, 0x49, | |
| 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, | |
| 0x9f, 0xbe, 0xdd, 0xfc, 0x1b, 0x3a, 0x59, 0x78, | |
| 0x88, 0xa9, 0xca, 0xeb, 0x0c, 0x2d, 0x4e, 0x6f, | |
| 0x80, 0xa1, 0xc2, 0xe3, 0x04, 0x25, 0x46, 0x67, | |
| 0xb9, 0x98, 0xfb, 0xda, 0x3d, 0x1c, 0x7f, 0x5e, | |
| 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, | |
| 0xea, 0xcb, 0xa8, 0x89, 0x6e, 0x4f, 0x2c, 0x0d, | |
| 0xe2, 0xc3, 0xa0, 0x81, 0x66, 0x47, 0x24, 0x05, | |
| 0xdb, 0xfa, 0x99, 0xb8, 0x5f, 0x7e, 0x1d, 0x3c, | |
| 0xd3, 0xf2, 0x91, 0xb0, 0x57, 0x76, 0x15, 0x34, | |
| 0x4c, 0x6d, 0x0e, 0x2f, 0xc8, 0xe9, 0x8a, 0xab, | |
| 0x44, 0x65, 0x06, 0x27, 0xc0, 0xe1, 0x82, 0xa3, | |
| 0x7d, 0x5c, 0x3f, 0x1e, 0xf9, 0xd8, 0xbb, 0x9a, | |
| 0x75, 0x54, 0x37, 0x16, 0xf1, 0xd0, 0xb3, 0x92, | |
| 0x2e, 0x0f, 0x6c, 0x4d, 0xaa, 0x8b, 0xe8, 0xc9, | |
| 0x26, 0x07, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, | |
| 0x1f, 0x3e, 0x5d, 0x7c, 0x9b, 0xba, 0xd9, 0xf8, | |
| 0x17, 0x36, 0x55, 0x74, 0x93, 0xb2, 0xd1, 0xf0 | |
| }; | |
| byte hi = 0, lo = 0, index; | |
| string s = ciagZnakow; | |
| foreach (var ch in s) | |
| { | |
| index = (byte)(hi ^ (byte)ch); | |
| hi = (byte)(lo ^ crc16htab[index]); | |
| lo = crc16ltab[index]; | |
| } | |
| //return ($"{(hi << 8) | lo}"); | |
| return ((hi << 8) | lo).ToString("X"); | |
| } | |
| } | |
| // errorlist | |
| Dictionary<int, string> frameErrorMessages = new Dictionary<int, string>() | |
| { | |
| { 1, "PROTO_ERR_CMD_UNKNOWN: Nierozpoznana komenda" }, | |
| { 2, "PROTO_ERR_CMD_MANDATORY_FIELDS: Brak obowiązkowego pola" }, | |
| { 3, "PROTO_ERR_DATA_CONVERSION: Błąd konwersji pola (np.: przesłana została wartość z przecinkiem w polu którego wartość przesyła się w częściach setnych np.: 12,34 zamiast 1234, lub przekroczony zakres danych)" }, | |
| { 4, "PROTO_ERR_TOKEN_INVALID: Błędny token" }, | |
| { 5, "PROTO_ERR_CRC_INVALID: Zła suma kontrolna" }, | |
| { 6, "PROTO_ERR_FLD_INVALID: Puste pole (kolejno dwa tabulatory)" }, | |
| { 7, "PROTO_ERR_CMD_LENGTH: Niewłaściwa długość nazwy rozkazu" }, | |
| { 8, "PROTO_ERR_TOKEN_LENGTH: Niewłaściwa długość tokena" }, | |
| { 9, "PROTO_ERR_CRC_LENGTH: Niewłaściwa długość sumy kontrolnej" }, | |
| { 10, "PROTO_ERR_DATA_LENGTH: Niewłaściwa długość pola danych" }, | |
| { 11, "PROTO_ERR_INPUT_BUFFER_OVERRUN: Zapełniony bufor odbiorczy" }, | |
| { 12, "PROTO_ERR_CMD_IMMEDIATE_FORBIDDEN: Nie można wykonać rozkazu w trybie natychmiastowym" }, | |
| { 13, "PROTO_ERR_TOKEN_NOT_FOUND: Nie znaleziono rozkazu o podanym tokenie" }, | |
| { 14, "PROTO_ERR_INPUT_QUEUE_FULL: Zapełniona kolejka wejściowa" }, | |
| { 15, "PROTO_ERR_SYNTAX: Błąd budowy ramki" } | |
| }; | |
| Dictionary<int, string> commandErrorMessages = new Dictionary<int, string>() | |
| { | |
| { 10, "ERR_CANCEL: Błąd nietypowy - rezygnacja, przerwanie funkcji" }, | |
| { 50, "ERR_UNKN: Błąd wykonywania operacji przez kasę" }, | |
| { 51, "ERR_ASSERT_FM: Błąd wykonywania operacji przez kasę" }, | |
| { 52, "ERR_ASSERT_DB: Błąd wykonywania operacji przez kasę" }, | |
| { 53, "ERR_ASSERT_SALE: Błąd wykonywania operacji przez kasę" }, | |
| { 54, "ERR_ASSERT_UI: Błąd wykonywania operacji przez kasę" }, | |
| { 55, "ERR_ASSERT_CFG: Błąd wykonywania operacji przez kasę" }, | |
| { 323, "ERR_OPER_BLOCKED: Funkcja zablokowana w konfiguracji" }, | |
| { 360, "ERR_SERVICE_SWITCH_FOUND: Znaleziono zworę serwisową" }, | |
| { 361, "ERR_SERVICE_SWITCH_NOT_FOUND: Nie znaleziono zwory serwisowej" }, | |
| { 362, "ERR_SERVICE_KEY_DATA: Błąd weryfikacji danych klucza" }, | |
| { 363, "ERR_SERVICE_KEY_TIMEOUT: Upłynął czas na odpowiedź od klucza" }, | |
| { 382, "ERR_RD_ZERO: Próba wykonania raportu zerowego" }, | |
| { 383, "ERR_RD_NOT_PRINTED: Brak raportu dobowego" }, | |
| { 384, "ERR_FM_NO_REC: Brak rekordu w pamięci" }, | |
| { 400, "ERR_WRONG_VALUE: Błędna wartość" }, | |
| { 460, "ERR_CLOCK_RTC_FSK: Błąd zegara w trybie fiskalnym" }, | |
| { 461, "ERR_CLOCK_RTC_NFSK: Błąd zegara w trybie niefiskalnym" }, | |
| { 480, "ERR_AUTH_AUTHORIZED: Drukarka już autoryzowana, bezterminowo" }, | |
| { 481, "ERR_AUTH_NOT_STARTED: Nie rozpoczęto jeszcze autoryzacji" }, | |
| { 482, "ERR_AUTH_WAS_ADDED: Kod już wprowadzony" }, | |
| { 483, "ERR_AUTH_DAY_CNT: Próba wprowadzenia błędnych wartości" }, | |
| { 484, "ERR_AUTH_BLOCKED: Minął czas pracy kasy, sprzedaż zablokowana" }, | |
| { 485, "ERR_AUTH_BAD_CODE: Błędny kod autoryzacji" }, | |
| { 486, "ERR_AUTH_TOO_MANY_WRONG_CODES: Blokada autoryzacji. Wprowadź kod z klawiatury" }, | |
| { 500, "ERR_STAT_MIN_OVF: Przepełnienie statystyki minimalnej" }, | |
| { 501, "ERR_STAT_MAX_OVF: Przepełnienie statystyki maksymalnej" }, | |
| { 502, "ERR_CASH_IN_MAX_OVF: Przepełnienie stanu kasy" }, | |
| { 503, "ERR_CASH_OUT_BELOW_0: Wartość stanu kasy po wypłacie staje się ujemna (przyjmuje się stan zerowy kasy)" }, | |
| { 700, "ERR_INVALID_IP_ADDR: Błędny adres IP" }, | |
| { 701, "ERR_INVALID_TONE_NUMBER: Błąd numeru tonu" }, | |
| { 702, "ERR_ILLEGAL_DRAWER_IMPULSE_LEN: Błąd długości impulsu szuflady" }, | |
| { 703, "ERR_ILLEGAL_VAT_RATE: Błąd stawki VAT" }, | |
| { 704, "ERR_INVALID_LOGOUT_TIME: Błąd czasu wylogowania" }, | |
| { 705, "ERR_INVALID_SLEEP_TIME: Błąd czasu uśpienia" }, | |
| { 706, "ERR_INVALID_TURNOFF_TIME: Błąd czasu wyłączenia" }, | |
| { 713, "ERR_CONFIG_SET: Błędne parametry konfiguracji" }, | |
| { 714, "ERR_ILLEGAL_DSP_CONTRAST: Błędna wartość kontrastu wyświetlacza" }, | |
| { 715, "ERR_ILLEGAL_DSP_LUMIN: Błędna wartość podświetlenia wyświetlacza" }, | |
| { 716, "ERR_ILLEGAL_DSP_OFF_DELAY: Błędna wartość czasu zaniku podświetlenia" }, | |
| { 717, "ERR_LINE_TOO_LONG: Zbyt długa linia nagłówka albo stopki" }, | |
| { 718, "ERR_ILLEGAL_COMM_CFG: Błędna konfiguracja komunikacji" }, | |
| { 719, "ERR_ILLEGAL_PROTOCOL_CFG: Błędna konfiguracja protokołu komunikacji" }, | |
| { 720, "ERR_ILLEGAL_PORT: Błędny identyfikator portu" }, | |
| { 721, "ERR_ILLEGAL_INFO_TXT_NUM: Błędny numer tekstu reklamowego" }, | |
| { 722, "ERR_ILLEGAL_TIME_DIFF: Podany czas wychodzi poza wymagany zakres" }, | |
| { 723, "ERR_ILLEGAL_TIME: Podana data/czas niepoprawne" }, | |
| { 724, "ERR_ILLEGAL_HOUR_DIFF: Inna godzina w różnicach czasowych 0<=>23" }, | |
| { 726, "ERR_ILLEGAL_DSP_LINE_CONTENT: Błędna zawartość tekstu w linii wyświetlacza" }, | |
| { 727, "ERR_ILLEGAL_DSP_SCROLL_VALUE: Błędna wartość dla przewijania na wyświetlaczu" }, | |
| { 728, "ERR_ILLEGAL_PORT_CFG: Błędna konfiguracja portu" }, | |
| { 738, "ERR_ETH_CONFIG: Nieprawidłowa konfiguracja Ethernetu" }, | |
| { 739, "ERR_ILLEGAL_DSP_ID: Nieprawidłowy typ wyświetlacza" }, | |
| { 740, "ERR_ILLEGAL_DSP_ID_FOR_OFF_DELAY: Dla tego typu wyświetlacza nie można ustawić czasu zaniku podświetlenia" }, | |
| { 820, "ERR_TEST: Negatywny wynik testu" }, | |
| { 821, "ERR_TEST_NO_CONF: Brak testowanej opcji w konfiguracji" }, | |
| { 857, "ERR_DF_DB_NO_MEM: Brak pamięci na inicjalizację bazy drukarkowej" }, | |
| { 1000, "ERR_FATAL_FM: Błąd fatalny modułu fiskalnego" }, | |
| { 1001, "ERR_FM_NCONN: Wypięta pamięć fiskalna" }, | |
| { 1002, "ERR_FM_WRITE: Błąd zapisu" }, | |
| { 1003, "ERR_FM_UNKN: Błąd nie ujęty w specyfikacji bios" }, | |
| { 1004, "ERR_FM_CHKSUM_CNT: Błędne sumy kontrolne" }, | |
| { 1005, "ERR_FM_CTRL_BLK_0: Błąd w pierwszym bloku kontrolnym" }, | |
| { 1006, "ERR_FM_CTRL_BLK_1: Błąd w drugim bloku kontrolnym" }, | |
| { 1007, "ERR_FM_BAD_REC_ID: Błędny id rekordu" }, | |
| { 1008, "ERR_FM_DATA_ADDR_INIT: Błąd inicjalizacji adresu startowego" }, | |
| { 1009, "ERR_FM_DATA_ADDR_INITED: Adres startowy zainicjalizowany" }, | |
| { 1010, "ERR_FM_NU_PRESENT: Numer unikatowy już zapisany" }, | |
| { 1011, "ERR_FM_NU_NO_PRESENT_FSK: Brak numeru w trybie fiskalnym" }, | |
| { 1012, "ERR_FM_NU_WRITE: Błąd zapisu numeru unikatowego" }, | |
| { 1013, "ERR_FM_NU_FULL: Przepełnienie numerów unikatowych" }, | |
| { 1014, "ERR_FM_NU_LANG: Błędny język w numerze unikatowym" }, | |
| { 1015, "ERR_FM_TIN_CNT: Więcej niż jeden NIP" }, | |
| { 1016, "ERR_FM_READ_ONLY_NFSK: Drukarka w trybie do odczytu bez rekordu fiskalizacji" }, | |
| { 1017, "ERR_FM_CLR_RAM_CNT: Przekroczono liczbę zerowań RAM" }, | |
| { 1018, "ERR_FM_REP_DAY_CNT: Przekroczono liczbę raportów dobowych" }, | |
| { 1019, "ERR_FM_VERIFY_NU: Błąd weryfikacji numeru unikatowego" }, | |
| { 1020, "ERR_FM_VERIFY_STAT: Błąd weryfikacji statystyk z RD." }, | |
| { 1021, "ERR_FM_VERIFY_NVR_READ: Błąd odczytu danych z NVR do weryfikacji FM" }, | |
| { 1022, "ERR_FM_VERIFY_NVR_WRITE: Błąd zapisu danych z NVR do weryfikacji FM" }, | |
| { 1023, "ERR_FM_CTRL_BLK_2: Pamięć fiskalna jest mała 1Mb zamiast 2Mb" }, | |
| { 1024, "ERR_FM_DATA_ADDR_NO_INITED: Nie zainicjalizowany obszar danych w pamięci fiskalnej" }, | |
| { 1025, "ERR_FM_NU_FORMAT: Błędny format numeru unikatowego" }, | |
| { 1026, "ERR_FM_REC_BAD_CNT: Za dużo błędnych bloków w FM" }, | |
| { 1027, "ERR_FM_NO_BADBLK_MARKER: Błąd oznaczenia błędnego bloku" }, | |
| { 1028, "ERR_FM_REC_EMPTY: Rekord w pamięci fiskalnej nie istnieje - obszar pusty" }, | |
| { 1029, "ERR_FM_REC_DATE: Rekord w pamięci fiskalnej z datą późniejszą od poprzedniego" }, | |
| { 1950, "ERR_TR_TOT_OVR: Przekroczony zakres totalizerów paragonu" }, | |
| { 1951, "ERR_TR_PF_OVR: Wpłata formą płatności przekracza max. wpłatę" }, | |
| { 1952, "ERR_TR_PF_SUM_OVR: Suma form płatności przekracza max. wpłatę" }, | |
| { 1953, "ERR_PAYMENT_OVR: Formy płatności pokrywają już do zapłaty" }, | |
| { 1954, "ERR_TR_CHANGE_OVR: Wpłata reszty przekracza max. wpłatę" }, | |
| { 1955, "ERR_TR_CHANGE_SUM_OVR: Suma form płatności przekracza max. wpłatę" }, | |
| { 1956, "ERR_TR_TOTAL_OVR: Przekroczony zakres totalizerów" }, | |
| { 1957, "ERR_TR_FISC_OVR: Przekroczony maksymalny zakres paragonu" }, | |
| { 1958, "ERR_TR_PACK_OVR: Przekroczony zakres wartości opakowań" }, | |
| { 1959, "ERR_TR_PACK_STORNO_OVR: Przekroczony zakres wartości opakowań przy stornowaniu" }, | |
| { 1961, "ERR_TR_PF_REST_TOO_BIG: Wpłata reszty zbyt duża" }, | |
| { 1962, "ERR_TR_PF_ZERO: Wpłata formą płatności wartości 0" }, | |
| { 1980, "ERR_TR_DISCNT_BASE_OVR: Przekroczony zakres kwoty bazowej rabatu/narzutu" }, | |
| { 1981, "ERR_TR_DISCNT_AFTER_OVR: Przekroczony zakres kwoty po rabacie/narzucie" }, | |
| { 1982, "ERR_TR_DISCNT_CALC: Błąd obliczania rabatu/narzutu" }, | |
| { 1983, "ERR_TR_DISCNT_BASE_NEGATIVE_OR_ZERO: Wartość bazowa ujemna lub równa 0" }, | |
| { 1984, "ERR_TR_DISCNT_ZERO: Wartość rabatu/narzutu równa 0" }, | |
| { 1985, "ERR_TR_DISCNT_AFTER_NEGATIVE_OR_ZERO: Wartość po rabacie ujemna lub równa 0" }, | |
| { 1990, "ERR_TR_STORNO_NOT_ALLOWED: Niedozwolone stornowanie towaru. Błędny stan transakcji" }, | |
| { 1991, "ERR_TR_DISCNT_NOT_ALLOWED: Niedozwolony rabat/narzut. Błędny stan transakcji" }, | |
| { 2000, "ERR_TR_FLD_VAT: Błąd pola VAT" }, | |
| { 2002, "ERR_NO_HDR: Brak nagłówka" }, | |
| { 2003, "ERR_HDR: Zaprogramowany nagłówek" }, | |
| { 2004, "ERR_NO_VAT: Brak aktywnych stawek VAT" }, | |
| { 2005, "ERR_NO_TRNS_MODE: Brak trybu transakcji" }, | |
| { 2006, "ERR_TR_FLD_PRICE: Błąd pola cena (cena <= 0)" }, | |
| { 2007, "ERR_TR_FLD_QUANT: Błąd pola ilość (ilość <= 0)" }, | |
| { 2008, "ERR_TR_FLD_TOTAL: Błąd kwoty total" }, | |
| { 2009, "ERR_TR_FLD_TOTAL_ZERO: Błąd kwoty total, równa zero" }, | |
| { 2010, "ERR_TOT_OVR: Przekroczony zakres totalizerów dobowych" }, | |
| { 2021, "ERR_RTC_WAS_SET: Próba ponownego ustawienia zegara" }, | |
| { 2022, "ERR_RTC_DIFF: Zbyt duża różnica dat" }, | |
| { 2023, "ERR_RTC_HOUR: Różnica większa niż godzina w trybie użytkownika w trybie fiskalnym" }, | |
| { 2024, "ERR_RTC_BAD_FORMAT: Zły format daty (np. 13 miesiąc)" }, | |
| { 2025, "ERR_RTC_FM_DATE: Data wcześniejsza od ostatniego zapisu do modułu" }, | |
| { 2026, "ERR_RTC: Błąd zegara" }, | |
| { 2027, "ERR_VAT_CHNG_CNT: Przekroczono maksymalną liczbę zmian stawek VAT" }, | |
| { 2028, "ERR_VAT_SAME: Próba zdefiniowania identycznych stawek VAT" }, | |
| { 2029, "ERR_VAT_VAL: Błędne wartości stawek VAT" }, | |
| { 2030, "ERR_VAT_NO_ACTIVE: Próba zdefiniowania stawek VAT wszystkich nieaktywnych" }, | |
| { 2031, "ERR_FLD_TIN: Błąd pola NIP" }, | |
| { 2032, "ERR_FM_ID: Błąd numeru unikatowego pamięci fiskalnej" }, | |
| { 2033, "ERR_FISC_MODE: Urządzenie w trybie fiskalnym" }, | |
| { 2034, "ERR_NO_FISC_MODE: Urządzenie w trybie niefiskalnym" }, | |
| { 2035, "ERR_TOT_NOT_ZERO: Niezerowe totalizery" }, | |
| { 2036, "ERR_READ_ONLY: Urządzenie w stanie tylko do odczytu" }, | |
| { 2037, "ERR_NO_READ_ONLY: Urządzenie nie jest w stanie tylko do odczytu" }, | |
| { 2038, "ERR_TRNS_MODE: Urządzenie w trybie transakcji" }, | |
| { 2039, "ERR_TOT_ZERO: Zerowe totalizery" }, | |
| { 2040, "ERR_CURR_CALC: Błąd obliczeń walut, przepełnienie przy mnożeniu lub dzieleniu" }, | |
| { 2041, "ERR_TR_END_VAL_0: Próba zakończenia pozytywnego paragonu wartością 0" }, | |
| { 2042, "ERR_REP_PER_DATE_FORMAT_FROM: Błędy formatu daty początkowej raportu okresowego" }, | |
| { 2043, "ERR_REP_PER_DATE_FORMAT_TO: Błędy formatu daty końcowej raportu okresowego" }, | |
| { 2044, "ERR_REP_PER_CURR_MONTH: Próba wykonania raportu miesięcznego w danym miesiącu" }, | |
| { 2045, "ERR_REP_PER_DATE_START_GT_CURR: Data początkowa późniejsza od bieżącej daty" }, | |
| { 2046, "ERR_REP_PER_DATE_END_GT_FISK: Data końcowa wcześniejsza od daty fiskalizacji" }, | |
| { 2047, "ERR_REP_PER_NUM_ZERO: Numer początkowy lub końcowy równy zero" }, | |
| { 2048, "ERR_REP_PER_NUM_FROM_GT_END: Numer początkowy większy od numeru końcowego" }, | |
| { 2049, "ERR_REP_PER_NUM_TOO_BIG: Numer raportu zbyt duży" }, | |
| { 2050, "ERR_REP_PER_DATE_END_GT_START: Data początkowa późniejsza od daty końcowej" }, | |
| { 2051, "ERR_REP_TXT_NO_MEM: Brak pamięci w buforze tekstów" }, | |
| { 2052, "ERR_TR_NO_MEM: Brak pamięci w buforze transakcji" }, | |
| { 2054, "ERR_TR_END_PAYMENT: Formy płatności nie pokrywają kwoty do zapłaty lub reszty" }, | |
| { 2055, "ERR_LINE: Błędna linia" }, | |
| { 2056, "ERR_EMPTY_TXT: Tekst pusty" }, | |
| { 2057, "ERR_SIZE: Przekroczony rozmiar" }, | |
| { 2058, "ERR_LINE_CNT: Błędna liczba linii" }, | |
| { 2060, "ERR_TR_BAD_STATE: Błędny stan transakcji" }, | |
| { 2062, "ERR_PRN_START: Jest wydrukowana część jakiegoś dokumentu" }, | |
| { 2063, "ERR_PAR: Błąd parametru" }, | |
| { 2064, "ERR_FTR_NO_HDR: Brak rozpoczęcia wydruku lub transakcji" }, | |
| { 2067, "ERR_PRN_CFG_SET: Błąd ustawień konfiguracyjnych wydruków/drukarki" }, | |
| { 2070, "ERR_WRONG_MAINTENANCE_TIME: Data przeglądu wcześniejsza od systemowej" }, | |
| { 2101, "ERR_DF_DB_OVR: Zapełnienie bazy danych" }, | |
| { 2102, "ERR_DF_DB_VAT_INACTIVE: Stawka VAT nieaktywna" }, | |
| { 2103, "ERR_DF_DB_VAT_INVALID: Nieprawidłowa stawka VAT" }, | |
| { 2104, "ERR_DF_DB_NAME: Błąd nazwy" }, | |
| { 2105, "ERR_DF_DB_NAME_VAT: Błąd przypisania stawki" }, | |
| { 2106, "ERR_DF_DB_LOCKED: Zablokowany" }, | |
| { 2107, "ERR_DF_DB_NAME_NOT_FOUND: Nie znaleziono w bazie drukarkowej" }, | |
| { 2108, "ERR_DF_DB_NOT_OVR: Baza nie jest zapełniona" }, | |
| { 2501, "ERR_FORM_ID: Błędny identyfikator raportu" }, | |
| { 2502, "ERR_FORM_LINE_NO: Błędny identyfikator linii raportu" }, | |
| { 2503, "ERR_FORM_HDR_NO: Błędny identyfikator nagłówka raportu" }, | |
| { 2504, "ERR_FORM_PAR_CNT: Zbyt mało parametrów raportu" }, | |
| { 2505, "ERR_FORM_NOT_STARTED: Raport nie rozpoczęty" }, | |
| { 2506, "ERR_FORM_STARTED: Raport rozpoczęty" }, | |
| { 2507, "ERR_FORM_CMD: Błędny identyfikator komendy" }, | |
| { 2521, "ERR_DB_REP_PLU_ACTIVE: Raport już rozpoczęty" }, | |
| { 2522, "ERR_DB_REP_PLU_NOT_ACTIVE: Raport nie rozpoczęty" }, | |
| { 2523, "ERR_DB_REP_PLU_VAT_ID: Błędna stawka VAT" }, | |
| { 2532, "ERR_FV_COPY_CNT: Błędna liczba kopii faktur" }, | |
| { 2600, "ERR_DISCNT_TYPE: Błędny typ rabatu/narzutu" }, | |
| { 2601, "ERR_TR_DISCNT_VALUE: Wartość rabatu/narzutu spoza zakresu" }, | |
| { 2701, "ERR_VAT_ID: Błąd identyfikatora stawki podatkowej" }, | |
| { 2702, "ERR_FTRLN_ID: Błędny identyfikator dodatkowej stopki" }, | |
| { 2703, "ERR_FTRLN_CNT: Przekroczona liczba dodatkowych stopek" }, | |
| { 2704, "ERR_ACC_LOW: Zbyt słaby akumulator" }, | |
| { 2705, "ERR_PF_TYPE: Błędny identyfikator typu formy płatności" }, | |
| { 2801, "ERR_DISCNT_VERIFY: Błąd weryfikacji wartości rabatu/narzutu" }, | |
| { 2802, "ERR_LNTOT_VERIFY: Błąd weryfikacji wartości linii sprzedaży" }, | |
| { 2803, "ERR_PACKTOT_VERIFY: Błąd weryfikacji wartości opakowania" }, | |
| { 2804, "ERR_CURRTOT_VERIFY: Błąd weryfikacji wartości formy płatności" }, | |
| { 2805, "ERR_ENDTOT_VERIFY: Błąd weryfikacji wartości fiskalnej" }, | |
| { 2806, "ERR_ENDPACKPLUS_VERIFY: Błąd weryfikacji wartości opakowań dodatnich" }, | |
| { 2807, "ERR_ENDPACKMINUS_VERIFY: Błąd weryfikacji wartości opakowań ujemnych" }, | |
| { 2808, "ERR_ENDPAYMENT_VERIFY: Błąd weryfikacji wartości wpłaconych form płatności" }, | |
| { 2809, "ERR_ENDCHANGE_VERIFY: Błąd weryfikacji wartości reszty" }, | |
| { 2851, "ERR_STORNO_QNT: Błąd stornowania, błędna ilość" }, | |
| { 2852, "ERR_STORNO_AMT: Błąd stornowania, błędna wartość" }, | |
| { 2900, "ERR_EC_NOT_ENOUGH_SPACE: Stan kopii elektronicznej nie pozwala na wydrukowanie tego dokumentu. Brak nośnika lub operacja na nośniku trwa" }, | |
| { 2901, "ERR_EC_EDM_NOT_READY: Pamięć podręczna kopii elektronicznej zawiera zbyt dużą ilość danych. Brak pliku na nośniku." }, | |
| { 2903, "ERR_EC_DATA_PENDING: Nieprawidłowy wynik testu." }, | |
| { 2911, "ERR_EC_EDM_FILE_NOT_FOUND: Nie można zmienić 2 raz waluty ewidencyjnej po RD." }, | |
| { 2913, "ERR_EC_TEST_FAILED: Próba ustawienia już ustawionej waluty." }, | |
| { 3051, "ERR_CURRENCY_ALREADY_CHANGED: Błędna nazwa waluty." }, | |
| { 3052, "ERR_CURRENCY_SAME: Automatyczna zmiana waluty." }, | |
| { 3053, "ERR_CURRENCY_INVALID_NAME: Błędna wartość przelicznika kursu." }, | |
| { 3054, "ERR_CURRENCY_SHOULD_CHANGE: Przekroczono maksymalną liczbę zmian walut." }, | |
| { 3055, "ERR_CURRENCY_RATE: Błąd zmiany waluty." }, | |
| { 3056, "ERR_CURRENCY_CHNG_CNT: Błędna liczba walut w bazie." }, | |
| }; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment