@@ -2,6 +2,7 @@ import os from "os";
22
33import { Adapter } from "@node-escpos/adapter" ;
44import type { Interface , InEndpoint , OutEndpoint , LibUSBException } from "usb" ;
5+ import { findBySerialNumber } from "usb" ;
56import { usb , getDeviceList , findByIds } from "usb" ;
67
78/**
@@ -57,26 +58,42 @@ export default class USBAdapter extends Adapter<[]> {
5758 }
5859 }
5960
61+ static isPrinter ( device : usb . Device ) : boolean {
62+ try {
63+ const length = device . configDescriptor ?. interfaces . filter ( ( iface ) => {
64+ return iface . filter ( ( conf ) => {
65+ return conf . bInterfaceClass === IFACE_CLASS . PRINTER ;
66+ } ) . length ;
67+ } ) . length ;
68+ return ( length !== undefined && length > 0 ) ;
69+ }
70+ catch ( e ) {
71+ // console.warn(e)
72+ return false ;
73+ }
74+ }
75+
6076 static findPrinter ( ) {
61- return getDeviceList ( ) . filter ( ( device ) => {
77+ return getDeviceList ( ) . filter ( ( device ) => USBAdapter . isPrinter ( device ) ) ;
78+ }
79+
80+ static getDevice ( vid : number , pid : number ) {
81+ return new Promise ( ( resolve , reject ) => {
6282 try {
63- return device . configDescriptor ?. interfaces . filter ( ( iface ) => {
64- return iface . filter ( ( conf ) => {
65- return conf . bInterfaceClass === IFACE_CLASS . PRINTER ;
66- } ) . length ;
67- } ) . length ;
83+ const device = findByIds ( vid , pid ) ;
84+ device ?. open ( ) ;
85+ resolve ( device ) ;
6886 }
69- catch ( e ) {
70- // console.warn(e)
71- return false ;
87+ catch ( err ) {
88+ reject ( err ) ;
7289 }
7390 } ) ;
7491 }
7592
76- static getDevice ( vid : number , pid : number ) {
77- return new Promise ( ( resolve , reject ) => {
93+ static getDeviceBySerial ( serialNumber : string ) {
94+ return new Promise ( async ( resolve , reject ) => {
7895 try {
79- const device = findByIds ( vid , pid ) ;
96+ const device = await findBySerialNumber ( serialNumber ) ;
8097 device ?. open ( ) ;
8198 resolve ( device ) ;
8299 }
0 commit comments