mirror of
https://github.com/MultiMote/niimbluelib.git
synced 2025-03-16 19:41:01 +03:00
f43fca5a07
NiimBlueLib 
Warning
This project is intended for informational and educational purposes only. The project is not affiliated with or endorsed by the original software or hardware vendor, and is not intended to be used for commercial purposes without the consent of the vendor.
NiimBlueLib is a library for the communication with NIIMBOT printers.
Project is in Alpha state. Use only exact version when you add it to your project. API can be changed anytime.
Usage example
import { Utils, RequestCommandId, ResponseCommandId, NiimbotBluetoothClient, ImageEncoder } from "@mmote/niimbluelib";
const client = new NiimbotBluetoothClient();
client.addEventListener("packetsent", (e) => {
console.log(`>> ${Utils.bufToHex(e.packet.toBytes())} (${RequestCommandId[e.packet.command]})`);
});
client.addEventListener("packetreceived", (e) => {
console.log(`<< ${Utils.bufToHex(e.packet.toBytes())} (${ResponseCommandId[e.packet.command]})`);
});
client.addEventListener("connect", () => {
console.log("connected");
});
client.addEventListener("disconnect", () => {
console.log("disconnected");
});
client.addEventListener("printprogress", (e) => {
console.log(`Page ${e.page}/${e.pagesTotal}, Page print ${e.pagePrintProgress}%, Page feed ${e.pageFeedProgress}%`);
});
await client.connect();
// label props
const props = {
width: 240,
height: 96,
printDirection: "left",
};
const quantity = 1;
const canvas = document.createElement("canvas");
canvas.width = props.width;
canvas.height = props.height;
const ctx = canvas.getContext("2d");
ctx.fillStyle = "white";
ctx.lineWidth = 3;
// fill background
ctx.fillRect(0, 0, canvas.width, canvas.height);
// draw diagonal line
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(canvas.width, canvas.height);
ctx.stroke();
// draw border
ctx.strokeRect(0.5, 0.5, canvas.width - 1, canvas.height - 1);
const image = ImageEncoder.encodeCanvas(canvas, props.printDirection);
await client.abstraction.print(client.getPrintTaskVersion(), image, { quantity });
try {
await client.abstraction.waitUntilPrintFinished(quantity);
} catch (e) {
console.error(e);
}
await client.abstraction.printEnd();
await client.disconnect();
Misc
Eslint not included. Install it with:
npm install --no-save --no-package-lock eslint@9.x globals @eslint/js typescript-eslint
Languages
TypeScript
88.5%
JavaScript
10.9%
HTML
0.6%