日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/1/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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();

總結

以上是生活随笔為你收集整理的java cpcl指令_H5 +蓝牙打印机 CPCL和ESC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲第一视频在线播放 | 欧美视频色 | 亚洲最大成人在线 | 天天天天干 | 蜜桃av免费在线观看 | 免费观看一区二区三区视频 | 涩涩网站在线看 | 西西大胆午夜视频 | 成人欧美一区二区三区黑人冫 | 国产激情视频 | 成人免费视频免费观看 | 性一交一乱一伧老太 | 涩涩网址 | 99视频网| 精品理论片 | 91欧美激情一区二区三区 | 欧美亚洲日本一区 | 久久久久久9999 | 六月丁香婷婷综合 | 婷婷五月综合激情 | 国产噜噜噜噜噜久久久久久久久 | 黄色片在线免费观看视频 | 亚洲乱亚洲乱 | 久久久久亚洲av成人网人人网站 | 色网在线免费观看 | www.天天干| 国产午夜激情视频 | 色哟哟在线免费观看 | 日韩欧美aaa | 欧美日韩亚洲国产综合 | 伊人国产一区 | 欧美日韩亚洲激情 | 免费a在线观看 | 潘金莲一级淫片a.aaaaa播放 | 亚洲欧美日韩精品永久在线 | 成人一级视频在线观看 | 老司机在线精品视频 | 国外成人性视频免费 | 波多野结衣一二三区 | 国产在线123 | 用力使劲高潮了888av | 成年激情网 | 国产精品第2页 | 沟厕沟厕近拍高清视频 | 亚洲欧美中文字幕5发布 | 吊视频一区二区三区 | 欧美香蕉| 亚洲精品三区 | 先锋影音久久 | 免费av网站在线观看 | 插插插干干干 | 能在线观看的av | 久久久二区 | 国产成人短视频 | 在线高清免费观看 | 国产精品网站在线观看 | 国产精品久久久免费观看 | 激情视频网站在线观看 | 亚洲熟女一区二区 | 欧美丝袜视频 | 亚洲av成人片色在线观看高潮 | 最近高清中文在线字幕在线观看 | 电影寂寞少女免费观看 | 美乳人妻一区二区三区 | 欧美性生活视频 | 亚洲天堂影院在线观看 | 视频区小说区图片区 | 男人晚上看的视频 | 亚洲精品成人在线 | 国产精品成人一区二区 | 国产crm系统91在线 | 天堂在线资源库 | 日本欧美激情 | av在线激情 | 日本动漫艳母 | 网站久久久 | 毛片天堂 | 国产91综合一区在线观看 | 91精品国产色综合久久不卡98 | 日韩va在线观看 | 91国在线观看 | 住在隔壁的她动漫免费观看全集下载 | 人人妻人人澡人人爽精品日本 | 欧洲一级片 | 亚洲欧美日韩久久精品 | 久久久久久一区二区三区 | 九九久视频 | 中国丰满人妻videoshd | www.youjizz.com视频 | 日本一道本在线 | 亚洲老老头同性老头交j | 激情小视频在线观看 | 大陆av在线播放 | 中文字幕在线视频第一页 | 日本污网站 | 欧美1314| 久久精品首页 | 91成人福利在线 | 免费观看a级片 |