I need help connecting an ESC-POS bluetooth printer using this plugin.
Here's my print service code:
import { Injectable } from '@angular/core';
import { CommonService } from './common.service';
import ThermalPrinterEncoder from 'thermal-printer-encoder';
import { BleClient, numbersToDataView, numberToUUID } from '@capacitor-community/bluetooth-le';
@Injectable({
providedIn: 'root'
})
export class PrinterService {
private PRINTER_SERVICE_UUID!:string;
private PRINTER_CHARACTERISTIC_UUID!:string;
private PRINTER_MAC:string = 'DC:0D:30:B7:90:F0'; //Printer BT Address
private encoder = new ThermalPrinterEncoder({
language: 'esc-pos',
width: 58,
wordWrap: true
});
constructor(
private common: CommonService,
) {}
async printTest() {
try {
let img = new Image();
img.src = 'assets/img/logo.png';
const result = this.encoder.initialize();
result
.text('This is a print test')
.newline()
.text('Do not mind what you are seeing')
.newline()
.cut('full');
const resultByte = result.encode();
await BleClient.initialize();
// Get the device using the MAC address
const devices = await BleClient.getDevices();
const device = devices.find((dev) => dev.address === this.PRINTER_MAC);
if (!device) {
this.common.showToast('Printer not found.','danger');
return;
}
// Connect to the printer
await BleClient.connect(device.deviceId, (deviceId) => onDisconnect(deviceId));
this.common.showToast('Connected to printer: '+ device,'success');
// Send print commands to the printer
await BleClient.write(device.deviceId, this.PRINTER_SERVICE_UUID, this.PRINTER_CHARACTERISTIC_UUID, resultByte);
this.common.showToast('Print successful!','success');
// Disconnect from the printer
await BleClient.disconnect(device.deviceId);
this.common.showToast('Disconnected from printer: '+ device,'danger');
} catch (error:any) {
this.common.showToast('Error printing to the printer: ' + error,'danger');
}
}
}
The above code is what I have tried but does seem to work.
I have already asked the question here, but I am yet to get any response.