marklife-label-printer-web-kit
Version:
JavaScript library for BLE label printing with Marklife printers
262 lines (249 loc) • 7 kB
JavaScript
var myinterface = require('./original_interface_chinese.js');
//===========================
/*连接打印机
params:
deviceId:String ,设备的id
success:function,成功的回调,回调参数:{ "msg": "成功", "deviceId": connectedDeviceId }
fail:function,失败的回调,回调参数:{"msg":"失败"}
*/
function connect(device, success, fail){
myinterface.connect(device, success, fail)
}
function onBLECharacteristicValueChange(callback){
myinterface.onBLECharacteristicValueChange(callback)
}
function onBLEConnectionStateChanged(callback){
myinterface.onBLEConnectionStateChanged(callback)
}
function onBluetoothAdapterStateChange(callback){
myinterface.onBluetoothAdapterStateChange(callback)
}
/*断开连接
*/
function disconnect(){
myinterface.disconnect()
}
function sendData (data,complete) {
myinterface.sendData(data,complete)
}
//===========================
/**
* 调整打印纸位置
*
* @param mode 调整方式
* 0x00: 进纸 (单位:像素点)
* 0x01: 进纸 (单位:mm)
* 0x10: 退纸 (单位:像素点)
* 0x11: 退纸 (单位:mm)
* @param distance 走纸距离
*/
function adjustPosition(mode, distance){
return myinterface.adjustPosition(mode, distance);
}
/**
* 打印定位
*/
function printerPosition() {
return myinterface.printerPosition();
}
/**
* 走纸命令
* @param lines 走纸行数
*/
function printLinedots(linedots) {
return myinterface.printLinedots(linedots);
}
/**
* 查询标签高度,必须要先走纸定位几张标签,建议先定位3张标签,等收到三个OK后再去调用此接口去获取标签高度,否则获取的不准* 确
*/
function getLabelHeight() {
return myinterface.getLabelHeight();
}
/**
* 设置打印机浓度(0-2)
* 0:低浓度
* 1:中浓度
* 2:高浓度
*/
function setDensity(level) {
return myinterface.setDensity(level);
}
/**
* 设置蓝牙传输类型
* @return 向打印机发送的数据
*/
function setBTType() {
return myinterface.setBTType();
}
/**
* 打印开始标志
*/
function startPrintjob() {
return myinterface.startPrintjob();
}
/**
* 打印结束标志
*/
function stopPrintjob() {
return myinterface.stopPrintjob();
}
/**
* 设置纸张类型
*
* @param model 设置方式
* 0x01: 设置纸张类型,设置成功打印机返回”OK\r\n”,失败时打印机返回”ER\r\n”。
* 0x02: 设置纸张类型,无返回值
* @param type 纸张类型
* 0x10: 连续纸
* 0x20: 缝隙纸
* 0x30: 黑标纸
*/
function setPaperType(model, type){
return myinterface.setPaperType(model,type);
}
/**
* 自动调整打印纸位置
*
* @param model 调整方式
* 0x50: 进纸
* 0x51: 退纸
*/
function adjustPositionAuto(model){
return myinterface.adjustPositionAuto(model);
}
/**
* 查询打印机状态
* 0:打印机正常
* 其他(根据"位"判断打印机状态)
* 第0位:1:正在打印
* 第1位:1:纸舱盖开
* 第2位:1:缺纸
* 第3位:1:电池电压低
* 第4位:1:打印头过热
* 第5位:缺省(默认0)
* 第6位:缺省(默认0)
* 第7位:缺省(默认0)
*/
function getPrinterStatus() {
return myinterface.getPrinterStatus();
}
/**
* 查询打印机电池电压
*电压(返回百分比)
*/
function getPrinterBatteryVol() {
return myinterface.getPrinterBatteryVol();
}
/**
* 查询打印机固件版本
*
*/
function getPrinterVersion() {
return myinterface.getPrinterVersion();
}
/**
* 查询打印机SN
*/
function getPrinterSN() {
return myinterface.getPrinterSN();
}
function setShutTime(time) {
return myinterface.setShutTime(time);
}
function getShutTime() {
return myinterface.getShutTime();
}
/**
* 低速传输图片
* @param id canvasId
* @param widthbmp 图片宽度
* @param heightbmp 图片高度
* @param callback 打印回调
* @return 向打印机发送的数据
*/
function printImage(id, widthbmp, heightbmp, callback) {
const ctx = wx.createCanvasContext(id)
return myinterface.printImageWithFast(ctx, id, widthbmp, heightbmp, callback);
}
function drawImage(ctx, filepath, startx, starty) {
// const ctx = wx.createCanvasContext('testimage')
wx.getImageInfo({
src: filepath,
success: function (res) {
var widthbmp = res.width;
var heightbmp = res.height;
ctx.drawImage(filepath, startx, starty, widthbmp, heightbmp);
}
})
}
//合并byte数组
function merge( data1, data2) {
var dataView1=new DataView(data1);
var dataView2 = new DataView(data2);
var buffer = new ArrayBuffer(dataView1.byteLength + dataView2.byteLength);
var dataView = new DataView(buffer)
for (var i = 0; i < dataView.byteLength; i++) {
if (i < dataView1.byteLength) {
dataView.setUint8(i, dataView1.getInt8(i));
} else {
dataView.setUint8(i, dataView2.getInt8(i - dataView1.byteLength));
}
}
return buffer;
}
/*开始打印
params:
revervse:bool, 是否反向打印,true反向,false正向
skip:bool,是否定位到标签,true定位,false不定位
*/
function printP80(revervse, skip) {
return myinterface.printP80(revervse, skip);
}
/*设置打印纸张大小(打印区域)的大小
params:
pageWidth:number 打印区域宽度
pageHeight:number 是否定位到标签,true定位,false不定位
*/
function pageSetupP80(pageWidth, pageHeight){
return myinterface.pageSetupP80(pageWidth, pageHeight);
}
/**
* 高速传输图片
* @param id canvasId
* @param widthbmp 图片宽度
* @param heightbmp 图片高度
* @param callback 打印回调
* @return 向打印机发送的数据
*/
function printImageWithP80(id, start_x,start_y,widthbmp, heightbmp, callback) {
const ctx = wx.createCanvasContext(id)
return myinterface.printImageWithP80(ctx, id, start_x,start_y,widthbmp, heightbmp, callback);
}
module.exports = {
connect:connect,
disconnect:disconnect,
onBLECharacteristicValueChange:onBLECharacteristicValueChange,
onBLEConnectionStateChanged:onBLEConnectionStateChanged,
onBluetoothAdapterStateChange:onBluetoothAdapterStateChange,
sendData:sendData,
adjustPosition:adjustPosition,
printerPosition:printerPosition,
printLinedots:printLinedots,
getLabelHeight:getLabelHeight,
setDensity: setDensity,
setBTType: setBTType,
startPrintjob: startPrintjob,
stopPrintjob: stopPrintjob,
getPrinterStatus:getPrinterStatus,
getPrinterBatteryVol:getPrinterBatteryVol,
getPrinterVersion:getPrinterVersion,
getPrinterSN:getPrinterSN,
printImage: printImage,
drawImage: drawImage,
setShutTime: setShutTime,
getShutTime: getShutTime,
merge: merge,
printP80:printP80,
pageSetupP80:pageSetupP80,
printImageWithP80:printImageWithP80
};