epson-printer-status
Version:
EPSON打印机状态监控 - Node.js原生模块,支持实时状态回调和完整ASB状态解析
198 lines (177 loc) • 5.5 kB
TypeScript
/**
* 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
};
}