diff --git a/src/packets/abstraction.ts b/src/packets/abstraction.ts index 8b62313..3199ef6 100644 --- a/src/packets/abstraction.ts +++ b/src/packets/abstraction.ts @@ -4,6 +4,7 @@ import { ConnectResult, HeartbeatType, LabelType, + PrinterErrorCode, PrinterInfoType, PrintTaskVersion, ResponseCommandId, @@ -97,7 +98,10 @@ export class Abstraction { if (packet.command === ResponseCommandId.In_PrintError) { Validators.u8ArrayLengthEquals(packet.data, 1); - throw new PrintError(`Print error (${ResponseCommandId[packet.command]} packet received)`, packet.data[0]); + const errorName = PrinterErrorCode[packet.data[0]] ?? "unknown"; + throw new PrintError( + `Print error (${ResponseCommandId[packet.command]} packet received, code is ${packet.data[0]} - ${errorName})`, packet.data[0] + ); } Validators.u8ArrayLengthAtLeast(packet.data, 4); // can be 8, 10, but ignore it for now diff --git a/src/packets/index.ts b/src/packets/index.ts index e86d686..63239f2 100644 --- a/src/packets/index.ts +++ b/src/packets/index.ts @@ -61,7 +61,8 @@ export enum ResponseCommandId { In_PrinterStatusData = 0xb5, In_PrinterReset = 0x38, In_PrintStatus = 0xb3, - In_PrintError = 0xdb, // For example, sent on SetPageSize when page print is not started + /** see {@link PrinterErrorCode}. For example, sent on SetPageSize when page print is not started. */ + In_PrintError = 0xdb, In_PrintQuantity = 0x16, In_PrintStart = 0x02, In_RfidInfo = 0x1b, @@ -158,6 +159,48 @@ export enum PrintTaskVersion { V5, } +/** In_PrintError status codes */ +export enum PrinterErrorCode { + COVER_OPEN = 0x01, + LACK_PAPER = 0x02, + LOW_BATTERY = 0x03, + BATTERY_EXCEPTION = 0x04, + USER_CANCEL = 0x05, + DATA_ERROR = 0x06, + OVERHEAT = 0x07, + PAPER_OUT_EXCEPTION = 0x08, + PRINTER_BUSY = 0x09, + NO_PRINTER_HEAD = 0x0a, + TEMPERATURE_LOW = 0x0b, + PRINTER_HEAD_LOOSE = 0x0c, + NO_RIBBON = 0x0d, + WRONG_RIBBON = 0x0e, + USED_RIBBON = 0x0f, + WRONG_PAPER = 0x10, + SET_PAPER_FAIL = 0x11, + SET_PRINT_MODE_FAIL = 0x12, + SET_PRINT_DENSITY_FAIL = 0x13, + WRITE_RFID_FAIL = 0x14, + SET_MARGIN_FAIL = 0x15, + COMMUNICATION_EXCEPTION = 0x16, + DISCONNECT = 0x17, + CANVAS_PARAMETER_ERROR = 0x18, + ROTATION_PARAMETER_EXCEPTION = 0x19, + JSON_PARAMETER_EXCEPTION = 0x1a, + B3S_ABNORMAL_PAPER_OUTPUT = 0x1b, + E_CHECK_PAPER = 0x1c, + RFID_TAG_NOT_WRITTEN = 0x1d, + SET_PRINT_DENSITY_NO_SUPPORT = 0x1e, + SET_PRINT_MODE_NO_SUPPORT = 0x1f, + SET_PRINT_LABEL_MATERIAL_ERROR = 0x20, + SET_PRINT_LABEL_MATERIAL_NO_SUPPORT = 0x21, + NOT_SUPPORT_WRITTEN_RFID = 0x22, + ILLEGAL_PAGE = 0x32, + ILLEGAL_RIBBON_PAGE = 0x33, + RECEIVE_DATA_TIMEOUT = 0x34, + NON_DEDICATED_RIBBON = 0x35, +} + export * from "./packet"; export * from "./packet_generator"; export * from "./abstraction";