UNPKG

epson-printer-status

Version:

EPSON打印机状态监控 - Node.js原生模块,支持实时状态回调和完整ASB状态解析

198 lines (177 loc) 5.5 kB
/** * EPSON打印机状态监控 Node.js原生模块 TypeScript类型定义 * * @author EDY * @version 1.0.0 */ declare module 'epson-printer-status' { /** * ASB状态位定义 */ export const ASB_STATUS_BITS: { readonly ASB_NO_RESPONSE: 0x00000001; readonly ASB_PRINT_SUCCESS: 0x00000002; readonly ASB_DRAWER_KICK: 0x00000004; readonly ASB_OFF_LINE: 0x00000008; readonly ASB_COVER_OPEN: 0x00000020; readonly ASB_PAPER_FEED: 0x00000040; readonly ASB_AUTOCUTTER_ERR: 0x00000800; readonly ASB_UNRECOVER_ERR: 0x00002000; readonly ASB_AUTORECOVER_ERR: 0x00004000; readonly ASB_RECEIPT_NEAR_END: 0x00020000; readonly ASB_RECEIPT_END: 0x00080000; readonly ASB_SPOOLER_IS_STOPPED: 0x80000000; }; /** * 错误码定义 */ export const ERROR_CODES: { readonly SUCCESS: 0; readonly ERR_TYPE: -10; readonly ERR_OPENED: -20; readonly ERR_NO_PRINTER: -30; readonly ERR_NO_TARGET: -40; readonly ERR_NO_MEMORY: -50; readonly ERR_HANDLE: -60; readonly ERR_TIMEOUT: -70; readonly ERR_ACCESS: -80; readonly ERR_PARAM: -90; readonly ERR_NOT_SUPPORT: -100; readonly ERR_OFFLINE: -110; readonly ERR_NOT_EPSON: -120; readonly ERR_WITHOUT_CB: -130; readonly ERR_LOCKED: -1000; }; /** * ASB状态位接口 */ export interface ASBStatusBits { ASB_NO_RESPONSE: boolean; ASB_PRINT_SUCCESS: boolean; ASB_DRAWER_KICK: boolean; ASB_OFF_LINE: boolean; ASB_COVER_OPEN: boolean; ASB_PAPER_FEED: boolean; ASB_AUTOCUTTER_ERR: boolean; ASB_UNRECOVER_ERR: boolean; ASB_AUTORECOVER_ERR: boolean; ASB_RECEIPT_NEAR_END: boolean; ASB_RECEIPT_END: boolean; ASB_SPOOLER_IS_STOPPED: boolean; } /** * 状态描述接口 */ export interface StatusDescription { chinese: { [key: string]: string; }; english: { [key: string]: string; }; } /** * 打印机状态接口 */ export interface PrinterStatus { /** 操作结果码 */ result: number; /** 状态值(数值) */ value: number; /** 状态值(十六进制字符串) */ hex: string; /** ASB状态位 */ bits: ASBStatusBits; /** 状态描述 */ description: StatusDescription; /** 时间戳 */ timestamp: string; /** 打印机名称 */ printer: string | null; } /** * 状态回调函数类型 */ export type StatusCallback = (status: PrinterStatus) => void; /** * EPSON打印机状态监控器类 */ export class EpsonPrinterMonitor { constructor(); /** * 连接到打印机 * @param printerName 打印机名称 * @returns Promise<number> 返回打印机句柄,失败时抛出异常 */ connect(printerName: string): Promise<number>; /** * 断开打印机连接 * @returns Promise<number> 返回操作结果 */ disconnect(): Promise<number>; /** * 设置状态变化回调函数 * @param callback 回调函数,接收状态对象参数 * @returns Promise<number> 返回设置结果 */ setStatusCallback(callback: StatusCallback): Promise<number>; /** * 获取当前打印机状态 * @returns Promise<PrinterStatus> 返回状态对象 */ getStatus(): Promise<PrinterStatus>; /** * 获取状态描述信息 * @param status 状态对象 * @returns StatusDescription 状态描述 */ getStatusDescription(status: PrinterStatus): StatusDescription; /** * 获取错误消息 * @param errorCode 错误码 * @returns string 错误消息 */ getErrorMessage(errorCode: number): string; /** * 检查是否已连接 * @returns boolean 连接状态 */ isConnectedToPrinter(): boolean; /** * 获取打印机名称 * @returns string | null 打印机名称 */ getPrinterName(): string | null; /** * 获取打印机句柄 * @returns number | null 打印机句柄 */ getPrinterHandle(): number | null; } /** * 原生模块接口(高级用法) */ export interface NativeModule { connect(printerName: string): number; disconnect(): number; setStatusCallback(callback: (status: any) => void): number; getStatus(): any; } /** * 便捷方法 - 创建新的监控实例 * @returns EpsonPrinterMonitor 新的监控实例 */ export function createMonitor(): EpsonPrinterMonitor; /** * 直接访问原生模块(高级用法) */ export const native: NativeModule; // 默认导出 export default { EpsonPrinterMonitor, ASB_STATUS_BITS, ERROR_CODES, createMonitor, native }; }