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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蓝牙打印和网口打印的实现

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝牙打印和网口打印的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
藍牙打印的js
export default {install(Vue,options){// 藍牙搜索方法Vue.prototype.SearchBluetooth = function () {/*plus變量定義*/var main, BluetoothAdapter, BAdapter, IntentFilter, BluetoothDevice, receiver;/*其他定義*/var isSearchDevices = false, //是否處于搜索狀態debug = false; //調試模式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();return {// 檢查藍牙是否開啟CheckBluetoothState:function(){return BAdapter.isEnabled();},// 開啟藍牙StartBluetooth:function(CallBack){var self = this; if(!BAdapter.isEnabled()) { // isEnabled判斷藍牙狀態plus.nativeUI.confirm("藍牙處于關閉狀態,是否打開?", function(e) {if(e.index == 0) {var enable = BAdapter.enable(); // 請求開啟藍牙console.log(enable); CallBack(true);}else{CallBack(false);}});}},// 開始搜索設備StartSeatch:function(CallBack,errcallback){try {var self = this;isSearchDevices = true;var filter = new IntentFilter(),bdevice = new BluetoothDevice();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;errcallback();return;}var BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE), // 設備對象bleName = BleDevice.getName(), //設備名稱bleId = BleDevice.getAddress(); //設備mac地址console.dir(JSON.stringify(BleDevice));if(!bleName || !bleId) {CallBack(false);}//判斷是否配對if(BleDevice.getBondState() === bdevice.BOND_BONDED) { // 已配對的藍牙設備CallBack({BleDevice:BleDevice,bleName:bleName, // 設備名稱bleId:bleId, // 設備idisPaired:true,is_active:false});} else { // 未配對的藍牙設備CallBack({BleDevice:BleDevice,bleName:bleName, // 設備名稱bleId:bleId, // 設備idisPaired:false});}}}catch(err) {errcallback();} },// 配對藍牙設備Bluepairing:function(BleDevice,bleId,CallBack,ErrCallBack){try {var self = this,bdevice = new BluetoothDevice(), // new java android.bluetooth.BluetoothDevice對象BleDeviceItem = BleDevice; // 賦值設備if(BleDeviceItem.getAddress() === bleId){BleDeviceItem.createBond(); // 設備進行配對var timeout = setInterval(function(){ // 創建定時器輪詢配對結果if(BleDeviceItem.getBondState() === bdevice.BOND_BONDED) { // 配對成功window.clearInterval(timeout);CallBack({status:true,errmsg:'配對成功'});} else if(BleDeviceItem.getBondState() === bdevice.BOND_NONE) { // 配對失敗window.clearInterval(timeout);ErrCallBack({status:false,errmsg:'配對失敗,請嘗試重新配對'});}},1000);}else{ErrCallBack({status:false,errmsg:'設備有誤'});}}catch(err) {ErrCallBack({status:false,errmsg:'異常錯誤'});} },CancelSearch:function(){ // 取消搜索main.unregisterReceiver(receiver); //取消監聽},}};// 打印機連接方法Vue.prototype.ConnectPrinter = {// 首次new這個類會創建進行連接BluePrinter: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);var bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);plus.android.importClass(bluetoothSocket);if(!bluetoothSocket.isConnected()) {try {bluetoothSocket.connect();} catch (e) {console.log(e);} }// 判斷是否連接 沒有連接則連接this.Print = function(byteStr){ // 打印的方法var outputStream = bluetoothSocket.getOutputStream();plus.android.importClass(outputStream);var bytes = plus.android.invoke(byteStr, 'getBytes', 'gbk');try {outputStream.write(bytes);} catch (e) {mui.toast('打印失敗!');} outputStream.flush();device = null;// bluetoothSocket.close();console.log(2);};// 檢查是否連接this.ConnectStatus = function(){return bluetoothSocket.isConnected();};// 關閉連接this.CloseConnect = function(){bluetoothSocket.close();};// 連接方法this.ConnectDevice = function(){try{bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);bluetoothSocket.connect();}catch(err){console.log(err.message);return false;}};// 保存當前連接的bleId 用于判斷使用單例模式this.BleId = bleId;}};}}
網口打印的js
export default {sockets:false,connectstatus:false,printIns:'',socketconnect:function(ip,port){try{if(plus.os.name=='Android'){var res = this.androidconnect(ip,port);return res;}if(plus.os.name == 'iOS'){}}catch(e){mui.toast("連接錯誤");return false;}},print:function(datastr,mm){this.printIns.println(datastr);this.sockets.close();},androidconnect:function(ip,port){if(this.sockets){if(this.sockets.isConnected() && !this.sockets.isClosed()){}else{var res = this.connectsockte(ip,port);return res;}}else{var res = this.connectsockte(ip,port);return res;}},connectsockte(ip,port){try{var Socket = plus.android.importClass("java.net.Socket");var PrintWriter = plus.android.importClass("java.io.PrintWriter");var BufferedWriter = plus.android.importClass("java.io.BufferedWriter");var OutputStreamWriter = plus.android.importClass("java.io.OutputStreamWriter");var BufferedReader = plus.android.importClass("java.io.BufferedReader");var InputStreamReader = plus.android.importClass("java.io.InputStreamReader");var SocketAddress = plus.android.importClass("java.net.InetSocketAddress");//測試改良var StrictMode = plus.android.importClass("android.os.StrictMode");var Build = plus.android.importClass("android.os.Build");if (Build.VERSION.SDK_INT > 9) {var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(policy);}var socket = new Socket();var socketAddr = new SocketAddress(ip,port);socket.connect(socketAddr,2000);var outputStreamWriter = new OutputStreamWriter(socket.getOutputStream(),'gbk');var bufferWriter = new BufferedWriter(outputStreamWriter);var out = new PrintWriter(bufferWriter, true);this.sockets = socket;this.printIns = out;mui.toast("連接成功");return true;}catch(e){mui.toast("連接打印機失敗");return false;}},socketclose:function(){this.sockets.close();} }
具體domo地址

https://github.com/Sun-Traget/print

總結

以上是生活随笔為你收集整理的蓝牙打印和网口打印的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩免费视频一区二区视频在线观看 | 午夜黄网 | 91浏览器在线观看 | 香蕉久久视频 | 一区二区在线免费观看视频 | 就要爱爱tv | 久久久久人妻一区 | 人人妻人人玩人人澡人人爽 | 国产资源av | 蜜桃成人在线视频 | 五月天色网站 | 夜夜爽妓女8888视频免费观看 | 久久草网站 | 狠狠干狠狠插 | 91美女视频网站 | 九九精品免费 | 午夜精品久久久久久久四虎美女版 | 亚洲a级精品 | 91久久人澡人人添人人爽欧美 | 亚洲三级中文字幕 | 国精产品一区二区三区 | 亚洲人一区二区三区 | 国产精品一亚洲av日韩av欧 | 日韩色图一区 | 中文字幕有码在线视频 | 在线视频 亚洲 | 漂亮人妻洗澡被公强 日日躁 | 日韩视频不卡 | 殴美一级片 | 中文字幕欧美另类精品亚洲 | 与子敌伦刺激对白播放的优点 | 国产日韩一区二区 | 成人图片小说 | 国产黑丝在线观看 | 欧美成人做爰大片免费看黄石 | av综合网站 | 波多av在线| 成人在线观看视频网站 | 午夜寂寞院 | 亚洲欧美日韩在线一区 | 欧美激情图区 | 91在线精品李宗瑞 | 国产美女av在线 | 日韩视频免费观看高清完整版 | 99热这里只 | 最新国产精品自拍 | 超碰在线免费观看97 | 国产探花精品一区二区 | 夜夜嗨av一区二区三区免费区 | 亚洲国产成人精品女人 | 天天干干天天 | 蜜桃91丨九色丨蝌蚪91桃色 | 中国a级黄色片 | 午夜肉伦伦 | 国产精品 欧美激情 | 久久伊人av | 福利在线一区二区三区 | 免费草逼视频 | 男人午夜天堂 | 国内国产精品天干天干 | 神马久久久久久久久久久 | 久久亚洲国产成人精品性色 | 狠狠操伊人 | 美女高潮视频在线观看 | 十八禁视频网站在线观看 | 四虎最新站名点击进入 | 久久依人网| 久久久久久黄色 | 羞羞的软件 | 人妻少妇精品无码专区二区 | 天天色综合影视 | 欧美乱妇在线观看 | www.国产在线视频 | 成年人黄色网址 | 成人交性视频免费看 | 中国av毛片 | av色吧| 免费在线a | 欧美,日韩,国产在线 | 无码精品一区二区三区在线播放 | 18国产免费视频 | 国产又大又粗又爽的毛片 | 在线观看视频www | 久久成年 | 国产九色视频 | 日本福利一区二区 | 蜜桃成人在线 | 麻豆精品在线视频 | 求av网站 | 男女做受视频 | 久久青青草视频 | 日韩二级| 亚洲成人免费在线 | 日日夜夜精品免费视频 | 欧美疯狂做受xxxxx高潮 | 国产二区自拍 | 国产精品久久久爽爽爽麻豆色哟哟 | 在线观看视频一区 | 久久av免费 |