mirror of
https://github.com/MultiMote/niimbluelib.git
synced 2025-03-17 03:51:01 +03:00
Add B21 print task
This commit is contained in:
parent
8514380849
commit
517d08b820
@ -351,7 +351,7 @@ export class Abstraction {
|
|||||||
await this.send(PacketGenerator.printerReset());
|
await this.send(PacketGenerator.printerReset());
|
||||||
}
|
}
|
||||||
|
|
||||||
public async waitUntilPrintFinishedV1(pagesToPrint: number, timeoutMs: number = 5_000): Promise<void> {
|
public async waitUntilPrintFinishedByPageIndex(pagesToPrint: number, timeoutMs: number = 5_000): Promise<void> {
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
const listener = (evt: PacketReceivedEvent) => {
|
const listener = (evt: PacketReceivedEvent) => {
|
||||||
if (evt.packet.command === ResponseCommandId.In_PrinterPageIndex) {
|
if (evt.packet.command === ResponseCommandId.In_PrinterPageIndex) {
|
||||||
@ -393,7 +393,7 @@ export class Abstraction {
|
|||||||
* @param pagesToPrint Total pages to print.
|
* @param pagesToPrint Total pages to print.
|
||||||
* @param pollIntervalMs Poll interval in milliseconds.
|
* @param pollIntervalMs Poll interval in milliseconds.
|
||||||
*/
|
*/
|
||||||
public async waitUntilPrintFinishedV2(pagesToPrint: number, pollIntervalMs: number = 300): Promise<void> {
|
public async waitUntilPrintFinishedByStatusPoll(pagesToPrint: number, pollIntervalMs: number = 300): Promise<void> {
|
||||||
return new Promise<void>((resolve, reject) => {
|
return new Promise<void>((resolve, reject) => {
|
||||||
this.client.dispatchTypedEvent("printprogress", new PrintProgressEvent(1, pagesToPrint, 0, 0));
|
this.client.dispatchTypedEvent("printprogress", new PrintProgressEvent(1, pagesToPrint, 0, 0));
|
||||||
|
|
||||||
@ -418,8 +418,44 @@ export class Abstraction {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async printEnd(): Promise<void> {
|
/**
|
||||||
await this.send(PacketGenerator.printEnd());
|
* Poll printer every {@link pollIntervalMs} and resolve when printer pages equals {@link pagesToPrint}.
|
||||||
|
*
|
||||||
|
* printprogress event is firing during this process.
|
||||||
|
*
|
||||||
|
* PrintEnd call is not needed after this functions is done running.
|
||||||
|
*
|
||||||
|
* @param pagesToPrint Total pages to print.
|
||||||
|
* @param pollIntervalMs Poll interval in milliseconds.
|
||||||
|
*/
|
||||||
|
public async waitUntilPrintFinishedByPrintEndPoll(pagesToPrint: number, pollIntervalMs: number = 500): Promise<void> {
|
||||||
|
return new Promise<void>((resolve, reject) => {
|
||||||
|
this.client.dispatchTypedEvent("printprogress", new PrintProgressEvent(1, pagesToPrint, 0, 0));
|
||||||
|
|
||||||
|
this.statusPollTimer = setInterval(() => {
|
||||||
|
this.printEnd()
|
||||||
|
.then((printEndDone: boolean) => {
|
||||||
|
if(!printEndDone) {
|
||||||
|
this.client.dispatchTypedEvent("printprogress", new PrintProgressEvent(1, pagesToPrint, 0, 0));
|
||||||
|
} else {
|
||||||
|
this.client.dispatchTypedEvent("printprogress", new PrintProgressEvent(pagesToPrint, pagesToPrint, 100, 100));
|
||||||
|
clearInterval(this.statusPollTimer);
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((e: unknown) => {
|
||||||
|
clearInterval(this.statusPollTimer);
|
||||||
|
reject(e as Error);
|
||||||
|
});
|
||||||
|
}, pollIntervalMs ?? 500);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** False returned when printEnd refused */
|
||||||
|
public async printEnd(): Promise<boolean> {
|
||||||
|
const response = await this.send(PacketGenerator.printEnd());
|
||||||
|
Validators.u8ArrayLengthEquals(response.data, 1);
|
||||||
|
return response.data[0] === 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public newPrintTask(name: PrintTaskName, options?: PrintOptions): AbstractPrintTask {
|
public newPrintTask(name: PrintTaskName, options?: PrintOptions): AbstractPrintTask {
|
||||||
|
@ -23,7 +23,7 @@ export class B1PrintTask extends AbstractPrintTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override waitForFinished(): Promise<void> {
|
override waitForFinished(): Promise<void> {
|
||||||
return this.abstraction.waitUntilPrintFinishedV2(
|
return this.abstraction.waitUntilPrintFinishedByStatusPoll(
|
||||||
this.printOptions.totalPages ?? 1,
|
this.printOptions.totalPages ?? 1,
|
||||||
this.printOptions.statusPollIntervalMs
|
this.printOptions.statusPollIntervalMs
|
||||||
);
|
);
|
||||||
|
33
src/print_tasks/B21V1PrintTask.ts
Normal file
33
src/print_tasks/B21V1PrintTask.ts
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import { EncodedImage } from "../image_encoder";
|
||||||
|
import { LabelType, PacketGenerator } from "../packets";
|
||||||
|
import { AbstractPrintTask } from "./AbstractPrintTask";
|
||||||
|
|
||||||
|
export class B21V1PrintTask extends AbstractPrintTask {
|
||||||
|
override printInit(): Promise<void> {
|
||||||
|
return this.abstraction.sendAll([
|
||||||
|
PacketGenerator.setDensity(this.printOptions.density ?? 2),
|
||||||
|
PacketGenerator.setLabelType(this.printOptions.labelType ?? LabelType.WithGaps),
|
||||||
|
PacketGenerator.printStart(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
override async printPage(image: EncodedImage, quantity?: number): Promise<void> {
|
||||||
|
this.checkAddPage(quantity ?? 1);
|
||||||
|
|
||||||
|
for (let i = 0; i < (quantity ?? 1); i++) {
|
||||||
|
await this.abstraction.sendAll([
|
||||||
|
PacketGenerator.pageStart(),
|
||||||
|
PacketGenerator.setPageSizeV2(image.rows, image.cols),
|
||||||
|
...PacketGenerator.writeImageData(image, this.printheadPixels()),
|
||||||
|
PacketGenerator.pageEnd(),
|
||||||
|
], this.printOptions.pageTimeoutMs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override waitForFinished(): Promise<void> {
|
||||||
|
return this.abstraction.waitUntilPrintFinishedByPrintEndPoll(
|
||||||
|
this.printOptions.totalPages ?? 1,
|
||||||
|
this.printOptions.statusPollIntervalMs
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -24,7 +24,7 @@ export class D110PrintTask extends AbstractPrintTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override waitForFinished(): Promise<void> {
|
override waitForFinished(): Promise<void> {
|
||||||
return this.abstraction.waitUntilPrintFinishedV2(
|
return this.abstraction.waitUntilPrintFinishedByStatusPoll(
|
||||||
this.printOptions.totalPages ?? 1,
|
this.printOptions.totalPages ?? 1,
|
||||||
this.printOptions.statusPollIntervalMs
|
this.printOptions.statusPollIntervalMs
|
||||||
);
|
);
|
||||||
|
@ -25,7 +25,7 @@ export class OldD11PrintTask extends AbstractPrintTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override waitForFinished(): Promise<void> {
|
override waitForFinished(): Promise<void> {
|
||||||
return this.abstraction.waitUntilPrintFinishedV1(
|
return this.abstraction.waitUntilPrintFinishedByPageIndex(
|
||||||
this.printOptions.totalPages ?? 1,
|
this.printOptions.totalPages ?? 1,
|
||||||
this.printOptions.statusTimeoutMs
|
this.printOptions.statusTimeoutMs
|
||||||
);
|
);
|
||||||
|
@ -23,7 +23,7 @@ export class V5PrintTask extends AbstractPrintTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override waitForFinished(): Promise<void> {
|
override waitForFinished(): Promise<void> {
|
||||||
return this.abstraction.waitUntilPrintFinishedV2(
|
return this.abstraction.waitUntilPrintFinishedByStatusPoll(
|
||||||
this.printOptions.totalPages ?? 1,
|
this.printOptions.totalPages ?? 1,
|
||||||
this.printOptions.statusPollIntervalMs
|
this.printOptions.statusPollIntervalMs
|
||||||
);
|
);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import { PrinterModel as M } from "../printer_models";
|
import { PrinterModel as M } from "../printer_models";
|
||||||
import { B1PrintTask } from "./B1PrintTask";
|
import { B1PrintTask } from "./B1PrintTask";
|
||||||
|
import { B21V1PrintTask } from "./B21V1PrintTask";
|
||||||
import { D110PrintTask } from "./D110PrintTask";
|
import { D110PrintTask } from "./D110PrintTask";
|
||||||
import { OldD11PrintTask } from "./OldD11PrintTask";
|
import { OldD11PrintTask } from "./OldD11PrintTask";
|
||||||
import { V5PrintTask } from "./V5PrintTask";
|
import { V5PrintTask } from "./V5PrintTask";
|
||||||
@ -8,6 +9,7 @@ export const printTasks = {
|
|||||||
D11_OLD: OldD11PrintTask,
|
D11_OLD: OldD11PrintTask,
|
||||||
D110: D110PrintTask,
|
D110: D110PrintTask,
|
||||||
B1: B1PrintTask,
|
B1: B1PrintTask,
|
||||||
|
B21_V1: B21V1PrintTask,
|
||||||
V5: V5PrintTask,
|
V5: V5PrintTask,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -16,7 +18,8 @@ export type PrintTaskName = keyof typeof printTasks;
|
|||||||
export const printTaskNames = Object.keys(printTasks) as PrintTaskName[];
|
export const printTaskNames = Object.keys(printTasks) as PrintTaskName[];
|
||||||
|
|
||||||
export const modelPrintTasks: Partial<Record<PrintTaskName, M[]>> = {
|
export const modelPrintTasks: Partial<Record<PrintTaskName, M[]>> = {
|
||||||
D11_OLD: [M.D11, M.D11S, M.B21_L2B, M.B21, M.B21_PRO, M.B21_C2B],
|
D11_OLD: [M.D11, M.D11S],
|
||||||
|
B21_V1: [M.B21, M.B21_L2B, M.B21_C2B],
|
||||||
D110: [M.B21S, M.B21S_C2B, M.D110],
|
D110: [M.B21S, M.B21S_C2B, M.D110],
|
||||||
B1: [M.D11_H, M.D110_M, M.B1],
|
B1: [M.D11_H, M.D110_M, M.B1],
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user