java cpcl指令_H5 +蓝牙打印机 CPCL和ESC

@[搜索蓝牙打印机函数]

var SearchBluetooth = function() {

/dom变量定义/

var BluetoothBtn = document.getElementById(“BluetoothBtn”), //最下边的按钮

unpairedList = document.getElementById(“unpairedList”), //未配对设备列表

pairedList = document.getElementById(“pairedList”), //已配对设备列表

loadImgHtml = ‘’; //加载图像HTML

/*plus变量定义*/

var main, BluetoothAdapter, BAdapter, IntentFilter, BluetoothDevice, receiver; //有些我也不知道是啥意思-_-!;

/*其他定义*/

var isSearchDevices = false, //是否处于搜索状态

savedBleId = localStorage.getItem("bleId"), //缓存的设备ID

IntervalObj, //定时器对象

BleDeviceObjAry = [], //BleDevice对象数组

debug = false; //调试模式

return {

//初始化方法

Init: function() {

main = plus.android.runtimeMainActivity(),

BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"),

IntentFilter = plus.android.importClass('android.content.IntentFilter'),

BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice"),

BAdapter = new BluetoothAdapter.getDefaultAdapter();

this.CheckBluetoothState();

this.EventInit();

},

//事件绑定

EventInit: function() {

var self = this,

bdevice = new BluetoothDevice();

//搜索

BluetoothBtn.addEventListener("tap", function() {

if(!isSearchDevices) {

self.SearchDevices();

}

});

/*未配对列表点击事件*/

mui("#unpairedList").on("tap", "li", function() {

var id = this.getAttribute("data-id"),

state = true;

self.SetButtonStatus("正在配对...", true);

for(var i = 0, l = BleDeviceObjAry.length; i < l; i++) {

var BleDeviceItem = BleDeviceObjAry[i];

main.unregisterReceiver(receiver); //取消监听

if(BleDeviceItem.getAddress() === id) {

BleDeviceItem.createBond();

self.SetButtonStatus("正在配对...", true);

var testBondState = setInterval(function() {

if(BleDeviceItem.getBondState() === bdevice.BOND_BONDED) {

mui.toast("配对成功");

self.SetButtonStatus("配对成功正在尝试连接打印机...", true);

localStorage.setItem("bleId", id);

var bleObj = new ConnectPrinter(id);

bleObj = null;

window.clearInterval(testBondState);

mui.back();

} else if(BleDeviceItem.getBondState() === bdevice.BOND_NONE) {

mui.toast("配对失败");

window.clearInterval(testBondState);

self.SetButtonStatus("重新搜索设备", false);

}

}, 1000);

state = false;

break;

}

}

if(state) {

mui.toast("配对失败请重新搜索设备");

self.SetButtonStatus("重新搜索设备", false);

}

});

/*已配对列表点击事件*/

mui("#pairedList").on("tap", "li", function() {

var id = this.getAttribute("data-id");

if(id) {

self.SetButtonStatus("配对成功正在尝试连接打印机...", true);

localStorage.setItem("bleId", id);

var bleObj = new ConnectPrinter(id);

bleObj = null;

mui.back();

}

});

},

//检测蓝牙状态

CheckBluetoothState: function() {

var self = this;

if(!BAdapter.isEnabled()) {

plus.nativeUI.confirm("蓝牙处于关闭状态,是否打开?", function(e) {

if(e.index == 0) {

BAdapter.enable();

}

});

debug && console.log("蓝牙处于关闭状态,正在打开...");

} else {

self.SearchDevices();

debug && console.log("蓝牙处于开启状态,准备搜索蓝牙设备...");

}

},

//搜索设备

SearchDevices: function() {

var self = this;

isSearchDevices = true;

self.SetButtonStatus("正在搜索蓝牙设备...", true);

debug && console.log("开始搜索蓝牙设备...");

var filter = new IntentFilter(),

bdevice = new BluetoothDevice();

BleDeviceObjAry = []; //清空BleDeviceObjAry

unpairedList.innerHTML = '';

pairedList.innerHTML = '';

BAdapter.startDiscovery(); //开启搜索

receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {

onReceive: onReceiveFn

});

filter.addAction(bdevice.ACTION_FOUND);

filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);

filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);

filter.addAction(BAdapter.ACTION_STATE_CHANGED);

main.registerReceiver(receiver, filter); //注册监听事件

//监听回调函数

function onReceiveFn(context, intent) {

plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作

//开始搜索改变状态

intent.getAction() === "android.bluetooth.device.action.FOUND" && (isSearchDevices = true);

//判断是否搜索结束

if(intent.getAction() === 'android.bluetooth.adapter.action.DISCOVERY_FINISHED') {

main.unregisterReceiver(receiver); //取消监听

isSearchDevices = false;

BleDeviceObjAry = [];

self.SetButtonStatus("重新搜索设备", false);

return false;

}

var BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE),

bleName = BleDevice.getName(), //设备名称

bleId = BleDevice.getAddress(); //设备mac地址

if(!bleName || !bleId) {

return false;

}

//判断是否配对

if(BleDevice.getBondState() === bdevice.BOND_BONDED) {

debug && console.log("已配对蓝牙设备:" + bleName + ' ' + bleId);

self.SetpairedListHtml(pairedList, bleName, bleId);

//如果缓存保存的设备ID和该ID一致则配对

if(savedBleId == bleId) {

BleDevice.createBond();

}

} else {

debug && console.log("未配对蓝牙设备:" + bleName + ' ' + bleId);

BleDeviceObjAry.push(BleDevice);

self.SetpairedListHtml(unpairedList, bleName, bleId);

}

}

},

//设置设备列表HTML

SetpairedListHtml: function(parentEl, bleName, bleId) {

var li = document.createElement('li');

li.setAttribute("data-id", bleId);

li.innerHTML = bleName + "" + bleId + "";

parentEl.appendChild(li);

},

//更改按钮状态

SetButtonStatus: function(tipText, isDisabled) {

if(isDisabled) {

BluetoothBtn.innerHTML = loadImgHtml + tipText;

BluetoothBtn.classList.add("mui-disabled");

} else {

BluetoothBtn.innerHTML = tipText;

BluetoothBtn.classList.remove("mui-disabled");

}

}

}

}();

//连接打印机和打印

//打印命令

// 导入的java包

//var Context, BluetoothAdapter, BluetoothDevice;

// 蓝牙服务与适配 54

(function(window) {

window.ConnectPrinter = function(bleId) {

var plusMain = plus.android.runtimeMainActivity(),

BluetoothAdapter = plus.android.importClass(“android.bluetooth.BluetoothAdapter”),

UUID = plus.android.importClass(“java.util.UUID”),

uuid = UUID.fromString(“00001101-0000-1000-8000-00805F9B34FB”),

BAdapter = BluetoothAdapter.getDefaultAdapter();

device = BAdapter.getRemoteDevice(bleId);

plus.android.importClass(device);

bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);

// createInsecureRfcommSocketToServiceRecord

plus.android.importClass(bluetoothSocket);

if(!bluetoothSocket.isConnected()) {

bluetoothSocket.connect();

}

//mui.toast(‘打印机已就绪,可正常打印!’);

this.gotoPrint = function(a,b,c,d,e) {

if(!bluetoothSocket.isConnected()) {

bluetoothSocket.connect();

}

if(bluetoothSocket.isConnected()) {

var outputStream = bluetoothSocket.getOutputStream();

plus.android.importClass(outputStream);

var printCmd="! 0 200 200 300 1 \n\r";//建立页面 8点=1mm

var pn="型号:"+a;

var brand="品牌:"+b;

var dcode="批次:"+c;

var qty="数量:"+d;

var box="订单号:"+e;

var kfname="圣和堂";

//内容

printCmd+="PAGE-WIDTH 600 \n\r";//打印型号 超过不显示

//printCmd+="TEXT 12 2 10 40 "+pn+"\n\r" ;//打印型号 超过不显示 文字

//printCmd+="TEXT 12 2 10 40 测试\n\r" ;//打印型号 超过不显示 文字

//printCmd+="CENTER \n\r";

printCmd+="SETMAG 2 2\n\r";

printCmd+="SETBOLD 2\n\r";

printCmd+="TEXT 24 0 250 10 "+kfname+" \n\r";

printCmd+="SETMAG 0 0\n\r";

printCmd+="SETBOLD 0\n\r";

//printCmd+="LEFT \n\r";

printCmd+="TEXT 24 0 10 70 "+pn+" \n\r";

printCmd+="TEXT 24 0 10 120 "+brand+"\n\r" ;//打印型号 超过不显示 文字

printCmd+="TEXT 24 0 10 170 "+dcode+"\n\r" ;//打印型号 超过不显示 文字

printCmd+="TEXT 24 0 10 220 "+qty+"\n\r" ;//打印型号 超过不显示 文字

printCmd+="TEXT 24 0 10 270 "+box+"\n\r" ;//打印型号 超过不显示 文字

//一维码

//printCmd+="BARCODE 128 1 1 50 10 160 "+a+"\n\r";//打印条码 超过不显示

//printCmd+="TEXT 24 0 50 210 "+a+" \n\r";

printCmd+="BARCODE QR 300 160 M 2 U 6\r\n";//打印二维条码 超过不显示BARCODE \n\r

printCmd+="MA,"+a+"\r\n";

printCmd+="ENDQR\n\r";

//开始打印

printCmd+="FORM \n\r"; // 型号:

printCmd+="PRINT \n\r";

//console.log(printCmd);

var arrayBuffer=plus.android.invoke(printCmd, 'getBytes', 'gbk');//stringToByte(printCmd);

//outputStream.write(plus.android.invoke(printCmd, 'getBytes', 'gbk'));

outputStream.write(arrayBuffer);

//outputStream.write(plus.android.invoke(cmd, 'getBytes', 'gbk'));

//outputStream.write(stringToByte(printCmd));

outputStream.flush();

// outputStream.write([0x1B,0x40]);//打印复位

// outputStream.write(plus.android.invoke(“测试打印”, ‘getBytes’, ‘gbk’));

// outputStream.write(plus.android.invoke("\n", ‘getBytes’, ‘gbk’));

//outputStream.write(plus.android.invoke(“测试打印”, ‘getBytes’, ‘gbk’));

//outputStream.flush();

device = null;

bluetoothSocket.close();

}

};

this.closePrint=function(){

device = null;

bluetoothSocket.close();

};

};

})(window);

function getLowHighByte(data)

{

var lowHighByte=[];

var dataLen = data.length;

lowHighByte[0] = 0xFF&dataLen;

lowHighByte[1] = (0xFF00&dataLen)>>8;

return lowHighByte;

}

//现有的数组连上后面字符串

function setAddStr(arr,str){

var arr1=stringToByte(str);

for(var i=0;i

arr.push(arr1[i]);

}

return arr;

}

//现有的数组连上后面字符串 低高位字节

function setAddLowHighByte(arr,arr1){

var arr2=getLowHighByte(arr1);

arr.push(arr2[0]);

arr.push(arr2[1]);

return arr;

}

//(function($, owner) {

// owner.OutputStream = null;

//

// owner.init = function(BluetoothSocket) {

// owner.OutputStream = BluetoothSocket.getOutputStream();

// plus.android.importClass(owner.OutputStream);

// }

//

// // 设置字体大小

// owner.SetFontSize = function(n) {

// var font = [0x1D, 0X21, n]

// owner.OutputStream.write(font);

// };

//

// // 打印字符串

// owner.PrintString = function(string) {

// var bytes = plus.android.invoke(string, ‘getBytes’, ‘gbk’);

// owner.OutputStream.write(bytes);

// };

//

// // 重置打印机

// owner.Reset = function() {

// var reset = [0x1B, 0X40];

// owner.OutputStream.write(reset);

// };

//

// // 打印下划线

// owner.Underline = function() {

// // 下划线指令

// var underline = [0x1b, 0x2d, 0x01];

// owner.OutputStream.write(underline);

// };

// // 左对齐

// owner.ALIGN_LEFT = function() {

// var align_left = [0x1b, 0x61, 0x00];

// owner.OutputStream.write(align_left);

// };

// // 中间对齐

// owner.ALIGN_CENTER = function() {

// var align_center = [0x1b, 0x61, 0x01];

// owner.OutputStream.write(align_center);

// };

// //加粗BOLD

// owner.BOLD = function() {

// var bold = [0x1b, 0x45, 0x01];

// owner.OutputStream.write(bold);

// };

// //取消加粗BOLD

// owner.BOLD_CANCEL = function() {

// var bold = [0x1d, 0x21, 0x11];

// owner.OutputStream.write(bold);

// };

// // 右对齐

// owner.ALIGN_RIGHT = function() {

// var align_right = [0x1b, 0x61, 0x02];

// owner.OutputStream.write(align_right);

// };

// // 结束打印

// owner.End = function() {

// owner.OutputStream.flush();

// var end = [0x1d, 0x4c, 0x1f, 0x00];

// owner.OutputStream.write(end);

// };

//

// // 打印图片(暂不可用)

// owner.Picture = function() {

// var picture = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x40, 0x1B, 0x33, 0x00];

// // var picture = [0x1B, 0x2A];

// owner.OutputStream.write(picture);

// };

//

// // 切纸(暂不可用)

// owner.CutPage = function() {

// // 发送切纸指令

// var end = [0x1B, 0x69];

// owner.OutputStream.write(end);

// };

//

// // 条形码打印(暂不可用)

// owner.PrintBarcode = function(n) {

// var barcode = [0x1D, 0x6B, 65, 5, 11, 12, 3, 6, 23];

// owner.OutputStream.write(barcode);

// };

//}(mui, window.PrintUtil = {}))

//var maxBit=200;每次最多传200个

//var isContinue=true;

//while(isContinue){

// var count = arrayBuffer.length;

// console.log(count);

// if (count > maxBit) {

// arrayBuffer=arrayBuffer.slice(200);

// outputStream.write(arrayBuffer.slice(0, maxBit));

// }else{

// isContinue=false;

// outputStream.write(arrayBuffer);

// }

//}

function arrApply(a,b){

for(var i in b){

a.push(b[i]);

}

return a;

}

function stringToByte(str) {

var bytes = new Array();

var len, c;

len = str.length;

for(var i = 0; i < len; i++) {

c = str.charCodeAt(i);

if(c >= 0x010000 && c <= 0x10FFFF) {

bytes.push(((c >> 18) & 0x07) | 0xF0);

bytes.push(((c >> 12) & 0x3F) | 0x80);

bytes.push(((c >> 6) & 0x3F) | 0x80);

bytes.push((c & 0x3F) | 0x80);

} else if(c >= 0x000800 && c <= 0x00FFFF) {

bytes.push(((c >> 12) & 0x0F) | 0xE0);

bytes.push(((c >> 6) & 0x3F) | 0x80);

bytes.push((c & 0x3F) | 0x80);

} else if(c >= 0x000080 && c <= 0x0007FF) {

bytes.push(((c >> 6) & 0x1F) | 0xC0);

bytes.push((c & 0x3F) | 0x80);

} else {

bytes.push(c & 0xFF);

}

}

return bytes;

}

//HTML 页面

mui.init();

ul {

margin: 0;

}

footer {

background: none !important;

border: none !important;

box-shadow: none !important;

bottom: 20px !important;

}

.printer-title {

color: #787878;

line-height: 30px;

font-size: 12px;

}

.printer-list {

min-height: 160px;

border-radius: 4px;

background-color: #fff;

font-size: 13px;

}

.printer-list>li {

line-height: 40px;

border-bottom: 1px solid #eee;

padding: 0 15px;

}

.printer-list>li>span {

color: #999;

float: right;

}

img.loadImg {

width: 16px;

margin-right: 6px;

vertical-align: middle;

}

.btn {

background-color: #5C75EE;

color: #fff;

font-size: 14px;

display: block;

width: 100%;

border: none;

height: 44px;

border-radius: 4px;

}

.btn:active {

background-color: #4d69ed !important;

}

连接打印机

正在初始化...

未配对蓝牙设备

已配对蓝牙设备

(function() {

//连接打印机函数

mui.plusReady(function() {

//调用蓝牙搜索

SearchBluetooth.Init();

});

})();

//16进制命令打印

outputStream.write([0x1B,0x40]);//打印复位

outputStream.write([0x1C,0x4C,0x63]);//清除

//outputStream.write([0x1B,0x24,0x00,0x00]);//设置绝对打印位置5mm,80表示00

outputStream.write([0x1D,0x4C,0x2F,0x00]);设置左边距0x2F

outputStream.write([0x1D,0x77,0x02]);//大小

//outputStream.write(plus.android.invoke("\n", ‘getBytes’, ‘gbk’)); //bytes

outputStream.write([0x1B,0x61,0x00]);//居左

outputStream.write([0x1D,0x4C,0x2F,0x00]);

var bytes = plus.android.invoke(PrintText, ‘getBytes’, ‘gbk’);

outputStream.write(bytes); //bytes

outputStream.flush();

outputStream.write([0x1C,0x4C,0x63]);//清除

//outputStream.write([0x1C,0x4C,0x63]);//清除

//outputStream.write([0x1B,0x40]);//打印复位

outputStream.write(plus.android.invoke("\n", ‘getBytes’, ‘gbk’)); //bytes

//一维码

//outputStream.write([0x1B,0x61,0x00]);//居左

var barcode= [0x1D,0x6B,0x04];//[0x1D, 0x6B, 0x04];

console.log(barcode);

var barcodeContent=“P”+a+“Q”+d+“D”+e;

var barcodebyte= plus.android.invoke(a, ‘getBytes’, ‘gbk’);

barcode = barcode.concat(barcodebyte);//barcodebyte

barcode.push(0x00);

console.log(barcode);

outputStream.write(barcode);

outputStream.write([0x1C,0x4C,0x63]);//清除

outputStream.write(plus.android.invoke("\n1234456", 'getBytes', 'gbk')); //bytes

outputStream.write(plus.android.invoke("\n", 'getBytes', 'gbk')); //bytes

outputStream.flush();

outputStream.write([0x1C,0x4C,0x63]);//清除

outputStream.write([0x1D,0x77,0x02]);

barcode=null;

barcode= [0x1D,0x6B,0x04];

barcode=barcode.concat(plus.android.invoke("Q1500ABCDEFGABCDEF", 'getBytes', 'gbk'));

barcode.push(0x00);

outputStream.write(barcode);

outputStream.flush();

outputStream.write([0x1C,0x4C,0x63]);//清除

outputStream.write(plus.android.invoke("\n箱 号:*12346*\n", 'getBytes', 'gbk')); //bytes

outputStream.write(plus.android.invoke("数 量:*12346*\n", 'getBytes', 'gbk')); //bytes

outputStream.write(plus.android.invoke("日 期:*12346*\n", 'getBytes', 'gbk')); //bytes

outputStream.flush();

//outputStream.write(plus.android.invoke("\n", 'getBytes', 'gbk')); //bytes

outputStream.write([0x1C,0x4C,0x63]);//清除

outputStream.write([0x1D,0x77,0x04]);//大小

outputStream.write([0x1C,0x4C,0x63]);//清除

//outputStream.write([0x1B,0x61,0x02]);//居右

//outputStream.write([0x1B,0x24,0x1D,0x80]);//设置绝对打印位置5mm,80表示00

outputStream.write([0x1D,0x5A,0x02]); 选择QR-CODE条码

outputStream.write([0x1C,0x4C,0x63]);//清除

var QrContent=[0x1B,0x5A,0x00,0x01,0x00];//,0x39,0x00

var Code128StrBytes = plus.android.invoke(barcodeContent, 'getBytes', 'gbk');

var arr=getLowHighByte(Code128StrBytes);

QrContent.push(arr[0]);

QrContent.push(arr[1]);

var SendCode128Bytes = QrContent.concat(Code128StrBytes);//Code128StrBytes

outputStream.write(SendCode128Bytes);

outputStream.write(plus.android.invoke("\n", 'getBytes', 'gbk')); //bytes

outputStream.flush();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值