Skip to content

Commit 12396bb

Browse files
authored
Merge pull request #49 from dschweinbenz/feature/usb-printer
feat: Added getDeviceBySerial function and outsourced isPrinter function
2 parents 63529f6 + a58cc9b commit 12396bb

File tree

2 files changed

+34
-12
lines changed

2 files changed

+34
-12
lines changed

.changeset/tricky-maps-listen.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@node-escpos/usb-adapter": minor
3+
---
4+
5+
Added getDeviceBySerial and outsourced isPrinter function for reusability

packages/usb-adapter/src/index.ts

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import os from "os";
22

33
import { Adapter } from "@node-escpos/adapter";
44
import type { Interface, InEndpoint, OutEndpoint, LibUSBException } from "usb";
5+
import { findBySerialNumber } from "usb";
56
import { 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

Comments
 (0)