一种蓝牙打印机的实现方案
蓝牙MAC地址打印解决方案
蓝牙MAC地址打印解决方案
【蓝牙应用】告别手动方式!MAC地址二维码自动打印方案
由于蓝牙4.0BLE技术有功耗低、延时短、安全性好等优点,这几年被广泛应用于智能手环、智能手表、智能传感器、共享单车等产品上。
蓝牙MAC 地址类似于一个蓝牙产品的身份证,具有唯一性、不可更改。
所以很多厂家为方便设备的管理,需要在产品的包装盒或者产品外壳上贴蓝牙MAC地址的二维码或者条码,更甚至是二维码和条码的组合。
当用户收到设备以后,可以用手机扫描二维码来让产品跟APP绑定,从而方便地使用和管理产品。
按传统的方法打印二维码耗时耗力,这对大量出货的厂家来说,交期和人工成本都是个不小的挑战。
传统打印二维码或者条码的方法是:
蓝牙外设上电-----手机APP获取设备MAC地址----人工记下MAC地址-----把MAC地址输入打印软件-----软件生成二维码或者条码-----打印机打印MAC地址
通过分析上述的流程,我们可以知道传统的方法有以下几个缺陷:。
蓝牙打印机论文设计
蓝⽛打印机论⽂设计新通信技术课程论⽂专业班级:指导⽼师:姓名:学号:蓝⽛打印机实现⽅案作为⼀种短距离⽆线通信协议,蓝⽛技术以其低成本、低功耗、⾼速率、⽅便灵活等特点在众多⽆线解决⽅案中脱颖⽽出。
蓝⽛10m的⼯作距离可以很好的满⾜⼤多数数字设备的应⽤场合,如办公室或家庭。
打印机是常⽤的⼀个设备,摆脱打印机连线所带来的不便,实现⽆线打印,可以减少桌⾯上令⼈不快的电缆,并且可以将打印机远离主机任意搬动,摆放在房间中适合的位置。
本⽂介绍⼀种⽤蓝⽛技术来实现主机与打印机的⽆线连接,实现遥控打印的⽅法。
蓝⽛打印机的设计⽅案设计的总体思路如图所⽰:在主机端⽤⼀单⽚机来仿真打印机进⾏⼯作,截取从主机并⼝传出的数据及控制信号,并通过蓝⽛⽆线连接传送到打印机端。
在打印机侧的单⽚机则根据所收到的蓝⽛数据来仿真主机对打印机进⾏控制操作,从⽽实现打印机与主机的蓝⽛⽆线连接。
主机端的蓝⽛作为主设备进⾏查询和发起连接,打印机端的蓝⽛则作为从设备等待连接的建⽴。
单⽚机采⽤89C2051,蓝⽛芯⽚采⽤爱⽴信公司⽣产的⽀持点对点连接的ROK101-008。
该模块内包括了⽆线部分、基带控制器、闪存、电源控制模块和内部时钟这五个主要部分,提供UART、PCM、I2C标准接⼝并内置晶振,其硬件框图如图所⽰:该⽅案适⽤于具有Centronic并⾏接⼝的通⽤打印机。
⽤户⽆须更改打印机的驱动程序,只需将含有单⽚机和蓝⽛的两块板⼦分别连接到主机端和打印机上,就可以进⾏⽆线打印了。
整个过程对于打印机驱动程序是透明的,这样就为打印机⽤户提供了很⼤的⽅便。
单⽚机对蓝⽛模块的控制蓝⽛规范定义了主机控制接⼝(HCI),它为基带控制器、硬件控制器、硬件状态和控制寄存器等提供了标准的命令接⼝。
主机通过HCI传输层将控制命令和数据发送给蓝⽛模块,⽽蓝⽛模块⼜通过HCI传输层将其状态信息及数据发还给主机。
HCI传输层的主要⽬的是实现透明性。
传输层不需要对主控制器驱动程序传送给主控制器的数据可见,这就使接⼝(HCI)或主控制器能在不影响传输层的基础上升级。
便携式蓝牙无线打印机设备工艺原理
便携式蓝牙无线打印机设备工艺原理前言在现代社会中,打印机已经成为一个必不可少的办公设备,它既可以在家庭中使用,也可以在企业和学校中使用。
由于其便携性和方便性,无线打印机的流行程度不断增加。
本文将介绍便携式蓝牙无线打印机设备的工艺原理。
设备特点便携式蓝牙无线打印机是一种小型打印设备,尺寸较小,体积较轻便,并且具有无线打印功能。
它可以通过WiFi或蓝牙技术与电脑、智能手机或平板电脑等设备连接,实现远程打印。
设备构成便携式蓝牙无线打印机由以下几个主要部分构成:打印头打印头是便携式蓝牙无线打印机最核心的部件,它可以打印文档中的内容,并将这些内容转化为可视化图像。
打印头通常由滚筒、喷墨头等部件构成。
电源电源是打印机的基础部件,通过电力可以为打印机提供电能,确保它能够正常工作。
控制电路控制电路是便携式蓝牙无线打印机的脑部,它负责打印机运动控制、数据处理以及与其它设备的通信等任务。
纸张输送部分纸张输送部分是便携式蓝牙无线打印机的重要组成部分,它可以给打印头提供纸张,并确保纸张的进出顺畅。
无线模块无线模块是便携式蓝牙无线打印机区别于传统打印机的关键部件,它可以与电脑、智能手机等设备进行无线互通,实现数据传输和远程打印。
工艺原理便携式蓝牙无线打印机的工艺原理是通过控制芯片和驱动程序的协作来实现的。
大致工艺流程如下:步骤一:生成数据首先,需要从电脑、智能手机或其他设备中获取需要打印的内容和图像数据。
这些数据可以是文本、图片或PDF格式的文件。
步骤二:数据处理数据处理是将生成的数据发送给打印机的过程。
一旦获取了要打印的数据,就会将其存储在缓冲器中,并通过控制电路转移到打印头。
步骤三:打印处理当缓冲器中的数据处理完毕后,就可以开始打印过程了。
通过打印头的运转,喷墨或其他方式,将打印信息转化为可见的图像。
步骤四:结束打印当所有的打印作业完成后,就会自动还原打印头的位置,结束打印。
设备优点便携式蓝牙无线打印机的优点在于其便携性和无线性。
H5开发连接蓝牙打印机打印标签(斑马ZR628)
H5开发连接蓝⽛打印机打印标签(斑马ZR628)1.连接蓝⽛打印机(先⽤⼿机⾃带蓝⽛进⾏配对),然后绑定出已配对的蓝⽛设备(⽤来选择/切换打印机之⽤),代码如下已配对蓝⽛设备,中显⽰的就是已连接的,点击⼀下即可代码:1 <!DOCTYPE html>2 <html>34 <head>5 <meta charset="utf-8">6 <title>打印机配对</title>7 <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">8 <meta name="apple-mobile-web-app-capable" content="yes">9 <meta name="apple-mobile-web-app-status-bar-style" content="black">10 <link href="../css/mui.min.css" rel="stylesheet" />11 <link rel="stylesheet" type="text/css" href="../css/app.css" />12 <style>13 .title {14 margin: 20px 15px 7px;15 color: #6d6d72;16 font-size: 15px;17 }1819 .mui-bar-nav {20 background: #004A86;21 }2223 .mui-icon-back:before,24 .mui-icon-left-nav:before,25 .mui-bar .mui-title {26 color: #ffffff;27 }2829 .mui-content>.mui-table-view:first-child {31 }3233 .mui-btn {34 padding: 1px 1px;35 }36 /*.mui-btn-primary{ border: 1px solid #004A86; background: #004A86;}*/3738 .mui-icon-search:before {39 font-size: 16px;40 }41 </style>42 </head>4344 <body>45 <div id="app" class="mui-off-canvas-wrap mui-slide-in">46 <header id="header" class="mui-bar mui-bar-nav" style="height: 44px;">47 <a class="mui-action-back mui-icon mui-icon-back mui-pull-left"></a>48 <h1 class="mui-title">打印机配对</h1>4950 </header>51 <div class="mui-content">52 <ul class="mui-table-view">53 <li class="mui-table-view-cell" style=" height: 45px;">54 <span>搜索设备</span>55 <div class="mui-btn">56 <input id="bt1" class="mui-icon mui-icon-search" type="button" value="搜索设备" onclick="searchDevices('a')">57 <!--<span class="mui-icon mui-icon-search"> 搜索</span>-->58 </div>59 </li>60 </ul>6162 <div class="title">未配对蓝⽛设备</div>63 <ul class="mui-table-view" id="list1">64 <li class="mui-table-view-cell">⽆</li>65 <!--<li class="mui-table-view-cell">Item 2</li>66 <li class="mui-table-view-cell">Item 3</li>-->67 </ul>68 <div class="title">已配对蓝⽛设备</div>69 <ul class="mui-table-view" id="list2">70 <li class="mui-table-view-cell">⽆</li>71 <!--<li class="mui-table-view-cell">Item 2</li>72 <li class="mui-table-view-cell">Item 3</li>-->73 </ul>7475 </div>76 <!--<header id="header" class="mui-bar mui-bar-nav" style="height: 44px;">77 <a class="mui-action-back mui-icon mui-icon-back mui-pull-left"></a>78 <h1 class="mui-title">物料清单.</h1>7980 </header>8182 <div id="pullrefresh" class="mui-content">83 <a href="new_file.html">其他测试</a>84 <p><input id="bt1" type="button" value="搜索设备" onclick="searchDevices('a')"></p>85 </button>86 </div>87 <div>88 未配对蓝⽛设备89 <ul id="list1">90 </ul>91 </div>92 <div>93 已配对蓝⽛设备949697 </ul>98 </div>-->99100 </div>101102 </body>103 <script type="text/javascript" src="../js/mui.min.js"></script>104 <script type="text/javascript" src="../js/libs/vue.min.js"></script>105 <script type="text/javascript" src="../js/common/config.js"></script>106 <script type="text/javascript" src="../js/common/global.js"></script>107 <script src="../js/cgn/mui.mkey.js"></script>108 <script src="../js/cgn/cgnpc.js"></script>109 <script type="application/javascript">110 //address=""搜索蓝⽛//address=设备mac地址,⾃动配对给出mac地址的设备111 function searchDevices(address) {112 //注册类113 var main = plus.android.runtimeMainActivity();114 var IntentFilter = plus.android.importClass('android.content.IntentFilter');115 var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");116 var BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");117 var BAdapter = BluetoothAdapter.getDefaultAdapter();118 console.log("开始搜索设备");119 var filter = new IntentFilter();120 var bdevice = new BluetoothDevice();121 var on = null;122 var un = null;123 var vlist1 = document.getElementById('list1'); //注册容器⽤来显⽰未配对设备124 vlist1.innerHTML = ''; //清空容器125 var vlist2 = document.getElementById('list2'); //注册容器⽤来显⽰未配对设备126 vlist2.innerHTML = ''; //清空容器127 var button1 = document.getElementById('bt1');128 button1.disabled = true;129 button1.value = '正在搜索请稍候...';130 BAdapter.startDiscovery(); //开启搜索131 var receiver;132 receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {133 onReceive: function(context, intent) { //实现onReceiver回调函数134 plus.android.importClass(intent); //通过intent实例引⼊intent类,⽅便以后的‘.’操作135 console.log(intent.getAction()); //获取action136 if(intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") {137 main.unregisterReceiver(receiver); //取消监听138 button1.disabled = false;139 button1.value = '搜索设备';140 console.log("搜索结束")141 } else {142143 BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);144 //判断是否配对145 if(BleDevice.getBondState() == bdevice.BOND_NONE) {146 console.log("未配对蓝⽛设备:" + BleDevice.getName() + ' ' + BleDevice.getAddress()); 147 //参数如果跟取得的mac地址⼀样就配对148 if(address == BleDevice.getAddress()) {149 if(BleDevice.createBond()) { //配对命令.createBond()150 console.log("配对成功");151 var li2 = document.createElement('li'); //注册152 li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址153 li2.setAttribute('onclick', 'print(id)'); //注册click点击列表进⾏打印154 li2.setAttribute('class', 'mui-table-view-cell');155 li2.innerText = BleDevice.getName();156 vlist2.appendChild(li2);157 }158159 } else {161 var li1 = document.createElement('li'); //注册162 li1.setAttribute('id', BleDevice.getAddress()); //打印机mac地址163 li1.setAttribute('onclick', 'searchDevices(id)'); //注册click点击列表进⾏配对164 li1.setAttribute('class', 'mui-table-view-cell');165 on = BleDevice.getName();166 li1.innerText = on;167 vlist1.appendChild(li1);168169 }170171 }172 } else {173 if(BleDevice.getName() != un) { //判断防⽌重复添加174 console.log("已配对蓝⽛设备:" + BleDevice.getName() + ' ' + BleDevice.getAddress()); 175 var li2 = document.createElement('li'); //注册176 li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址177 li2.setAttribute('onclick', 'print(id)'); //注册click点击列表进⾏打印178 li2.setAttribute('class', 'mui-table-view-cell'); //注册click点击列表进⾏打印179 un = BleDevice.getName();180 li2.innerText = un;181 vlist2.appendChild(li2);182 }183 }184 }185186 }187 });188189 filter.addAction(bdevice.ACTION_FOUND);190 filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);191 filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);192 filter.addAction(BAdapter.ACTION_STATE_CHANGED);193194 main.registerReceiver(receiver, filter); //注册监听195 }196197 var device = null,198 BAdapter = null,199 BluetoothAdapter = null,200 uuid = null,201 main = null,202 bluetoothSocket = null;203204 function print(mac_address) {205 if(!mac_address) {206 mui.toast('请选择蓝⽛打印机');207 return;208 }209 //alert(mac_address);210 localStorage.setItem("macaddress", mac_address);211 alert('打印机已配对成功');212 return;213 }214 </script>215216 </html>2.打印页⾯,只有⼀个按钮(⽣成条码),见下图,代码如下注:打印是⽤的斑马ZPL指令(如需学习百度很多~)1 <script type="application/javascript">2 //address=""搜索蓝⽛//address=设备mac地址,⾃动配对给出mac地址的设备3 function searchDevices(address) {4 //注册类5 var main = plus.android.runtimeMainActivity();6 var IntentFilter = plus.android.importClass('android.content.IntentFilter');7 var BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");8 var BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");9 var BAdapter = BluetoothAdapter.getDefaultAdapter();10 console.log("开始搜索设备");11 var filter = new IntentFilter();12 var bdevice = new BluetoothDevice();13 var on = null;14 var un = null;15 var vlist1 = document.getElementById('list1'); //注册容器⽤来显⽰未配对设备16 vlist1.innerHTML = ''; //清空容器17 var vlist2 = document.getElementById('list2'); //注册容器⽤来显⽰未配对设备18 vlist2.innerHTML = ''; //清空容器19 var button1 = document.getElementById('bt1');20 button1.disabled = true;21 button1.value = '正在搜索请稍候';22 BAdapter.startDiscovery(); //开启搜索23 var receiver;24 receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {25 onReceive: function(context, intent) { //实现onReceiver回调函数26 plus.android.importClass(intent); //通过intent实例引⼊intent类,⽅便以后的‘.’操作27 console.log(intent.getAction()); //获取action28 if(intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") {29 main.unregisterReceiver(receiver); //取消监听30 button1.disabled = false;31 button1.value = '搜索设备';32 console.log("搜索结束")33 } else {34 BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);35 //判断是否配对36 if(BleDevice.getBondState() == bdevice.BOND_NONE) {37 console.log("未配对蓝⽛设备:" + BleDevice.getName() + ' ' + BleDevice.getAddress());38 //参数如果跟取得的mac地址⼀样就配对39 if(address == BleDevice.getAddress()) {40 if(BleDevice.createBond()) { //配对命令.createBond()41 console.log("配对成功");42 var li2 = document.createElement('li'); //注册43 li2.setAttribute('id', BleDevice.getAddress()); //打印机mac地址44 li2.setAttribute('onclick', 'printIndex(id)'); //注册click点击列表进⾏打印45 li2.innerText = BleDevice.getName();46 vlist2.appendChild(li2);47 }4849 } else {50 if(BleDevice.getName() != on) { //判断防⽌重复添加51 var li1 = document.createElement('li'); //注册52 li1.setAttribute('id', BleDevice.getAddress()); //打印机mac地址53 li1.setAttribute('onclick', 'searchDevices(id)'); //注册click点击列表进⾏配对54 on = BleDevice.getName();55 li1.innerText = on;56 vlist1.appendChild(li1);5758 }5960 }61 } else {62 if(BleDevice.getName() != un) { //判断防⽌重复添加63 console.log("已配对蓝⽛设备:" + BleDevice.getName() + ' ' + BleDevice.getAddress());64 var li2 = document.createElement('li'); //注册6667 li2.setAttribute('onclick', 'printIndex(id)'); //注册click点击列表进⾏打印68 un = BleDevice.getName();69 li2.innerText = un;70 vlist2.appendChild(li2);71 }72 }73 }7475 }76 });7778 filter.addAction(bdevice.ACTION_FOUND);79 filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);80 filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);81 filter.addAction(BAdapter.ACTION_STATE_CHANGED);8283 main.registerReceiver(receiver, filter); //注册监听84 }8586 var device = null,87 BAdapter = null,88 BluetoothAdapter = null,89 uuid = null,90 main = null,91 bluetoothSocket = null;9293 function printIndex(molList) {94 var total = 1;95 var btnArray = ['确定', '取消'];96 mui.prompt('请输⼊打印数量...', total, '', btnArray, function(e) {97 if(e.index == 0) {98 total = parseFloat(e.value);99 if(total == 0) {100 alert("请输⼊⼤于0的数量!");101 return false;102 } else {103 print(molList, total);104 }105 } else {106 mui.toast("已取消");107 }108 });109 }110111 function print(molList, total) {112 g.showWaiting("标签打印中,请稍等...");113 var mac_address = localStorage.getItem("macaddress");114 if(!mac_address) {115 mui.toast('请选择蓝⽛打印机');116 return;117 }118 localStorage.setItem("macaddress", mac_address);119 //alert(localStorage.getItem("macaddress"));120 main = plus.android.runtimeMainActivity();121 BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter"); 122 UUID = plus.android.importClass("java.util.UUID");123 uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");124 BAdapter = BluetoothAdapter.getDefaultAdapter();125 device = BAdapter.getRemoteDevice(mac_address);126 plus.android.importClass(device);127 bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);128 plus.android.importClass(bluetoothSocket);129131 console.log('检测到设备未连接,尝试连接....');132 bluetoothSocket.connect();133 }134135 console.log('设备已连接');136137 if(bluetoothSocket.isConnected()) {138 // alert(bluetoothSocket.isConnected());139 var outputStream = bluetoothSocket.getOutputStream();140 plus.android.importClass(outputStream);141 var wlbm = molList.MATERIAL_CODE.slice(-10);142 var wlms = molList.MATERIAL_DESCRIPTION;143 var ddh = molList.ORDER_NUMBER;144 var sl = molList.CHECK_SUM;145 var dw = molList.SALES_UNIT;146147 var string = "^XA^MNW^JUS^CI28" +148 "^FO15,25" +149 "^MD" +150 "^A@N,20,20,E:HANS.TTF" +151 //"^A@N,20,20,E:SIMSUN.TTF" +152 "^FD" + wlbm + "^FS" +153 "^FO15,55" +154 "^A@N,20,20,E:HANS.TTF" +155 "^FD名称:" + wlms + "^FS" +156 "^FO15,85" +157 "^A@N,20,20,E:HANS.TTF" +158 "^FD订单号:" + ddh + "^FS" +159 "^FO15,115" +160 "^A@N,20,20,E:HANS.TTF" +161 "^FD到货⽇期:" + app.PSTNG_DATE + " 数量:" + sl + "^FS" + 162 "^FO15,145" +163 "^A@N,20,20,E:HANS.TTF" +164 "^FD⼯⼚:5020 单位:" + dw + "^FS" +165 "^FO55,175^BY1.8" +166 "^BCN,50,Y,N,N" +167 "^FD" + wlbm + "^FS" +168 "^PQ" + total + ",2,1,Y" +169 "^XZ";170171 var bytes = plus.android.invoke(string, 'getBytes', 'UTF-8');172 outputStream.write(bytes);173 outputStream.flush();174 g.closeWaiting();175176 device = null //这⾥关键177 bluetoothSocket.close(); //必须关闭蓝⽛连接否则意外断开的话打印错误178179 }180 }181 </script>182补充下:本⼈已经离项⽬没拿代码,官⽹案例请参考。
手机蓝牙打印机教程
手机蓝牙打印机教程手机蓝牙打印机是一种把手机与打印机通过蓝牙连接起来的便携式设备,可以方便地将手机中的文件、照片或文档直接打印出来。
下面是一个手机蓝牙打印机的教程,以帮助您更好地了解和使用这一设备。
第一步:准备工作首先,您需要确保手机蓝牙打印机已经充好电,并且有足够的打印纸。
另外,查看您的手机蓝牙是否开启,如果没有,请前往手机设置中的蓝牙选项开启它。
第二步:配对设备在您的手机蓝牙打印机上找到配对按钮,在按下配对按钮后,打印机会发出蓝牙信号供您的手机搜索和配对。
打开手机蓝牙设置,搜索附近的设备并选择您的打印机。
一旦连接成功,手机和打印机之间将建立蓝牙连接。
第三步:选择文件打开您手机中希望打印的文件,可以是照片、文档或其他格式的文件。
选择并查看文件,确保它们是您想要打印的内容。
第四步:打印设置在您的手机上选择“打印”选项,这将打开打印设置页面。
在此页面上,您可以选择纸张大小、打印方向、打印品质等,根据您的需求进行调整。
第五步:打印文件一旦您对打印设置满意,点击“打印”按钮即可开始打印。
手机将发送打印文件的指令到蓝牙打印机,打印机会打印出您的文件。
第六步:查看打印结果等待片刻,您的打印机将完成打印任务。
取出打印出的文件,查看打印结果是否符合您的期望。
如果有任何问题,您可以检查打印设置或者重新执行打印操作。
总结:使用手机蓝牙打印机可以方便快捷地将手机中的文件打印出来。
只需要进行简单的配对和设置操作,即可实现打印功能。
希望这个教程能够帮助您更好地了解和使用手机蓝牙打印机,使您的打印工作更加便捷和高效。
打印机蓝牙通信系统研究与实现
Bl t o h p i e o m un c to s se s a c nd Re lz to ue o t rnt r c m i a i n y tm Re e r h a a i a i n
XI a —fi W ANG i y n .YANG u i E Xi o e . S— a g S —yng
L 一
应 用
打印机蓝牙通信系统研究与实现
谢 小飞, 司洋 , 王 杨素英
( 大连理工大学 电子与信 息工程 学院 大连 162 ) 103
摘要 : 出一种 将有 线打 印机 改进 为蓝 牙通 信 的设 计方 法。该 方法的 关键 技 术是 以发 送和接 收 两个 端点 提 UB接 口为邻接 , S 在蓝 牙 H I C 层协 议 的规 范 下, 利用 UB技 术解析 打 印机数 据格 式 , S 完成 UB数据 和蓝 牙 S
( a a nvr t o eh ooy Sh o o lc o i a dIf m t nE gneigD l n 16 2 , hn) D l nU iesy f c n l ,co l f et nc n no ai n ier ai 10 3 C ia i i T g E r r o n a
fr t, n i al c o l h st emu u lc n e o B d t n u t oh HCIACL d t r t. si ga a - o mas a dfn lya c mp i e h t a ha g fUS aaa d Bl eo t s aaf mas Te tn n l o y i sc rid o tt ov h o lm f a ke o so u to hc mmu c to a a p i zn h CM o to lr ssi a re u os let epr b e o c t s f p l Bl eo t o niain d t,o tmii gt eS c nrl e p o e sa an Th e tn e u ts o h t heBl eo t rn e o r c s g i . et si gr s l h wst a u t oh p it rc mmu ia in s se d t sc mp ee a d a v r— t n c t y tm aai o lt n a i o — eyo i tfr t r u p re t f n o masa es p o td. Th i tq aiyi ih. I ec nr le ’Spe o ma c nd t l e to h’S pr eprn u lt sh g f h o tolr r r n ea heb u — o t t f Ba d rt r mp o e t rn i gs e d c nbei r v dg e ty Th sde in i r c ia n o t e ce t u aea ei r v d,hep i tn p e a mp o e r al . i sg sp a t la d c s- f in . c i Ke ywo d : u toh HCI r s Bl e o t ;USB; mmunc to n r l r Prn e Co iain Co tol ; itr e
移动应用中的打印功能实现方法
移动应用中的打印功能实现方法在移动互联网时代,移动应用已经成为我们生活中不可或缺的一部分。
无论是购物、社交还是工作,手机应用已经扮演了重要角色。
然而,人们在使用手机应用时,有时也会遇到一些需要打印的情况。
比如说,我们可能需要打印出某个重要文件或是保存一些珍贵的照片。
那么,在移动应用中如何实现打印功能呢?本文将探讨几种常见的打印功能实现方法。
一、云打印方法云打印是一种将打印任务发送到远程服务器打印机的方法。
这种方法使用起来非常方便,只需要连接到互联网,即可实现远程打印。
在移动应用中实现云打印功能,我们可以借助一些云打印服务提供商的API和SDK。
例如,Google Cloud Print是一个常用的云打印服务,在移动应用中通过调用相应的API,即可实现将打印任务发送到云打印机,并完成打印的功能。
二、局域网打印方法局域网打印是一种将打印任务发送到局域网内打印机的方法。
与云打印不同的是,局域网打印无需连接到互联网,只需手机和打印机处于同一局域网内即可。
在移动应用中实现局域网打印功能,可以使用一些支持网络打印的库或框架。
例如,Android系统为开发者提供了PrintManager类,可以方便地实现局域网打印功能。
开发者只需调用相应的方法,选择要打印的文件,然后将打印任务发送到局域网内的打印机即可。
三、蓝牙打印方法蓝牙打印是一种将打印任务通过蓝牙连接发送到蓝牙打印机的方法。
与云打印和局域网打印相比,蓝牙打印更适合一些不便于连接到互联网或局域网的环境下使用。
在移动应用中实现蓝牙打印功能,开发者可以使用蓝牙打印机提供的SDK或API。
一般来说,这些SDK或API都会提供发送和接收打印任务的方法,开发者只需按照文档说明进行调用即可。
四、其他方法除了上述的云打印、局域网打印和蓝牙打印方法,还有一些其他的打印实现方法。
比如说,通过使用扫描仪或照相机将纸质文件或照片扫描或拍照成电子文件,然后再通过移动应用进行打印。
佳博便携打印机蓝牙设置阀值教程_
佳博便携打印机蓝牙设置阀值教程_
(原创实用版)
目录
1.佳博便携打印机概述
2.蓝牙设置步骤
3.阀值设置教程
4.结论
正文
【1.佳博便携打印机概述】
佳博便携打印机是一款集便携性与实用性于一身的打印设备,可以满足用户在各种场景下的打印需求。
通过蓝牙连接,它可以与手机、平板等移动设备配合使用,实现无线打印。
【2.蓝牙设置步骤】
为了使用佳博便携打印机,首先需要进行蓝牙设置。
以下是设置步骤:
1.打开打印机电源,确保打印机处于工作状态。
2.打开移动设备的蓝牙开关,进入蓝牙设置界面。
3.在蓝牙设备列表中找到佳博便携打印机,并点击连接。
4.等待几秒钟,打印机与移动设备将自动连接。
【3.阀值设置教程】
佳博便携打印机具有阀值设置功能,用户可以根据实际需求设置打印机的阀值。
以下是阀值设置教程:
1.在移动设备上打开佳博便携打印机对应的 APP。
2.在 APP 界面中找到“阀值设置”选项,点击进入。
3.在阀值设置界面,可以调整打印机的阀值。
4.完成阀值设置后,点击“保存”按钮。
【4.结论】
佳博便携打印机通过蓝牙连接,可以实现与移动设备的无线打印。
同时,用户还可以根据需求设置打印机的阀值,提高打印效果。
基于stm32的蓝牙热敏打印机的设计
Abstract: Traditional printers are not wired to get rid of wired devices,but there is no good solution to
the effect of volume. Portable Bluetooth thermal printer,homeopathic,portable way,wireless printing
表、物流、金融、邮政等行业的首选便携蓝牙热敏打
印机 [2]。
量共 8 MB。W25Q64 支持页编程,每次可以编程 256
个字节;支持扇区、块、整片擦除指令,每次可分别擦
除 16 页、256 页和整个芯片 [6]。
热敏打印机的原理是用加热的方式使涂在打印
纸上的热敏介质变色。热敏微型打印机式是比较常
见 的 微 型 打 印 机 ,但 比 针 式 微 型 打 印 机 出 来 得 要
打印机并没有什么很好的解决方式。便携蓝牙热敏
基金项目:国家自然科学基金(51805099)
作者简介:胡应坤(1984—),男,广东揭阳人,硕士研究生,讲师。研究方向:嵌入式系统应用。
-171-
《电子设计工程》2020 年第 5 期
到消费者强烈喜爱。便携蓝牙热敏打印机具有小巧
外 观 、功 能 齐 全 、性 能 稳 定 、兼 容 性 好 等 特 点 ,是 抄
way,so that consumers are strongly loved. The system design of a Bluetooth thermal printer based on
CORTEX ⁃ M3,the printer in the present application is very extensive,cost ⁃ effective STM32C8T6
基于STM32单片机蓝牙针式打印机的设计和应用
1 系统设计
蓝牙打印机硬件采用嵌入式架构,单片机控制各 个模块协同工作,单片机采用ST公司的STM32系列的 STM32F101单片机。打印机配备了蓝牙、USB两种数 据接口,可实现无线和有线两种打印方式,USB接口还 可以作为打印机字库下载和打印机参数设置接口。打印 机面板共有4个指示灯和2个按键,指示灯分别用于指示 开机、充电、蓝牙连接状态和故障,按键为开/关机键 和进纸键。电源管理电路主要包括DC-DC电源转换电 路、开/关机电路和电池充电控制电路。打印机内置蜂 鸣器,当按下开/关机键,开机和关机时蜂鸣器会长鸣 一声,另外,当电池电压过低或打印机出现故障时蜂鸣 器也会发出警示音。单片机通过AD采集电池电压估算
201902正文2-93.indd 62
2019/1/31 18:17:07
责任编辑:毛烁
平时,Q104截止,Q105、Q106截止,直流电机停止 转动,停转时直流电机由于惯性转动发电,同时由于 Q107导通,Q107充当直流电机发电的负载,由于负载 比较大,直流电机惯性阻力增大,迫使电机立即停转, 这时Q107充当刹车功能。
201902正文2-93.indd 61
2019/1/31 18:17:06
集成电路 IC
图3 针头移动直流电机驱动电路
图4 打印票据流程图 电池电量,当电量不足时开机指示灯由绿灯转为红灯, 提醒用户及时充电。打印头采用STAR针式打印头,驱 动电路包括针头驱动、针头移动驱动和进纸步进电机驱 动电路。图1是该打印机的电路原理框图。
进电机驱动电路由STA471A达林顿管驱动,电路较为
简单,本文主要介绍针头移动直流电机驱动电路,如图
3。
电路中,
开始
Carriage_
Ctl为单片机 IO控制脚,
蓝牙打印方案
蓝牙打印方案近年来,随着无线通信技术的发展,越来越多的商家开始采用无线蓝牙打印方案,实现更高效、更便捷的打印方式。
蓝牙打印方案不仅广泛应用于餐饮、医疗、物流等行业,还被运用于智能家居、智能穿戴等领域。
本篇文章就为大家详细介绍蓝牙打印方案的优势、适用场景和注意事项。
一、蓝牙打印方案的优势1.无线连接传统的打印方案,需要使用连接线连接设备,且线材长度有限,距离较远的设备会因此无法连接。
而蓝牙打印方案解决了这个问题,无需连接线即可实现设备间的无线连接。
2.灵活性蓝牙打印方案可以连接多种设备,包括手机、平板、电脑等,可以满足不同场景的需求。
3.易于携带蓝牙打印机体积小、重量轻,可以随时随地携带,适合移动打印需求。
4.打印效率高使用蓝牙打印方案可以大大提高打印效率,减少等待时间,提高工作效率。
二、蓝牙打印方案的适用场景1.餐饮行业在餐厅里,服务员可以通过手机或平板连接蓝牙打印机,实时打印顾客点的菜单,提高点餐效率。
2.医疗行业在医院里,医生可以通过手机或平板连接蓝牙打印机,打印患者的诊断报告,方便及时了解患者病情。
3.物流行业在物流公司里,工作人员可以通过手机或平板连接蓝牙打印机,实时打印物流单证,提高工作效率,减少操作过程中的出错率。
4.智能家居在智能家居领域,蓝牙打印方案被应用于智能门锁、智能家电等设备上,实现设备间的联动和控制。
三、注意事项1.设备之间需要保持一定距离,以保证无线连接的稳定性。
2.使用时需要确保设备已经开启了蓝牙连接功能。
3.使用过程中需要避免干扰信号频繁的设备或场景,以保证打印质量。
综上所述,蓝牙打印方案作为一种高效、便捷、灵活的打印方式,已经得到了广泛的应用。
在不同行业和领域中都有着非常广泛的场景应用,相信在未来,蓝牙打印方案的应用还会不断地得到推广和普及。
东芝打印机2010ac蓝牙连接设置
东芝打印机2010ac蓝牙连接设置
1、打开手机蓝牙开关,将蓝牙打印机插上电源,打开电源开关先在电脑上安装USB蓝牙适配器,安装好驱动程序后,可以在控制面板上发现有Bluetooth设备图标,可以通过此程序连接设备。
2、下载安装gprinter标签打印软件。
如果应用商店找不到,可以通过浏览器搜索下载,安装后打开通过windows自带的蓝牙管理程序,就可以和蓝牙打印机配对,配对成功后,就会建立蓝牙虚拟串口,如COM3。
然后安装打印机驱动,在打印的输出设置中,将数据的端口指定到之前建立的那个蓝牙串口(Com3)。
3、点击“打印工具”按钮,点击“蓝牙设置”选择型号和端口选择安港粕登漪装驱动的打印机型号,可以点击下方的“浏览”在本地计算机中查找,点击“下一步”,选择打印机端口,点击“下一步”。
4、软件将自动搜索周围开启蓝牙的设备,找到蓝牙打印机(printer),点击设置打印机名称输入打印机名称,可以使用默认名称,下方可以选择是否要共享这台打印机,点击“下一步”。
5、在蓝牙配对对话框中,输入pin码,初始号码为0000。
配对成功后,将显示连接设备的名称设置检查配置信息检查之前的配置信息,点击“上一步”可以修改之前的配置,确认无误后,点击“完成”开始安装驱动程序。
6、配对成功后,以后打开标签编辑软件将自动列出打印机,不用再次配对。
返回软件启动界面,即可进入编辑和打印。
Web实现蓝牙打印及Webbluetooth的用法
Web实现蓝⽛打印及Webbluetooth的⽤法在Web的项⽬中,前端界⾯往往会有⼀些打印功能,本⾝浏览器的打印功能也挺好⽤的,但是浏览器⼀般是输出到普通A4打印机,如果需要打印⼀些便签之类,需要⽤到蓝⽛打印机,这时这个打印功能就⽆能为⼒了。
幸好我发现了⼀个Webbluetooth的项⽬,这个项⽬也是⼀个⾕歌官⽅发起的项⽬,实现⽹页对蓝⽛的调⽤,⽬前Chrome系较⾼版本浏览器⽀持。
要使⽤Web蓝⽛功能需要⼀个usb⼝的蓝⽛适配器,可以在Chrome浏览器中输⼊"chrome://bluetooth-internals"查看蓝⽛设备状态,该调试功能⾮常强⼤!通过UUID可以查看到所有的蓝⽛设备、service、Characteristics,以及读写蓝⽛设备蓝⽛打印机连接上后不是发⽂本就能直接打印,⽽是要转换成打印指令,⼀般是通过ESC/POS通⽤打印指令传递打印指令的,就是说我们要输出的⽂本、⼆维码、图⽚等内容需要转换成ESC/POS指令。
⽬前⼤多数蓝⽛打印机都是⽀持ESC/POS指令的,指令可以看了解下,百度上还有专门详尽的指令集说明,不过我们不需要⾃⼰来写指令转换代码,我找到⼀个js库,很⽅便的实现了ESC/POS编码,Webbluetooth如何应⽤,,这⾥有个⽂档简单说明。
这个则是有案例,也可以把代码扒下来,我将它改写成⼀个模块`class BluetoothPrinter {constructor() {this._EVENTS = {};this._CHARACTERISTIC = null;this._QUEUE = [];this._WORKING = false;}connect() {console.log('Requesting Bluetooth Device...');return new Promise((resolve, reject) => {navigator.bluetooth.requestDevice({filters: [{ services: ['000018f0-0000-1000-8000-00805f9b34fb'] }]}).then(device => {console.log('Connecting to GATT Server...');device.addEventListener('gattserverdisconnected', this._disconnect.bind(this));return device.gatt.connect();}).then(server => server.getPrimaryService("000018f0-0000-1000-8000-00805f9b34fb")).then(service => service.getCharacteristic("00002af1-0000-1000-8000-00805f9b34fb")).then(characteristic => {this._CHARACTERISTIC = characteristic;resolve();}).catch(error => {console.log('Could not connect! ' + error);reject();});});}print(command) {const maxLength = 100;let chunks = Math.ceil(command.length / maxLength);if (chunks === 1) {this._queue(command);} else {for (let i = 0; i < chunks; i++) {let byteOffset = i * maxLength;let length = Math.min(command.length, byteOffset + maxLength);this._queue(command.slice(byteOffset, length));}}}_queue(f) {var that = this;function run() {if (!that._QUEUE.length) {that._WORKING = false;return;}that._WORKING = true;that._CHARACTERISTIC.writeValue(that._QUEUE.shift()).then(() => run() );}that._QUEUE.push(f);if (!that._WORKING) run();}addEventListener(e, f) {this._EVENTS[e] = f;}isConnected() {return !! this._CHARACTERISTIC;}_disconnect() {console.log('Disconnected from GATT Server...');this._CHARACTERISTIC = null;if (this._EVENTS['disconnected']) {this._EVENTS['disconnected']();}}};module.exports = BluetoothPrinter;`使⽤的时候直接require进来,在调⽤的过程中却总是出错Could not connect! SecurityError: Failed to execute 'requestDevice' on 'Bluetooth': Must be handling a user gesture to show a permission request.⽤必应查了⼀遍⽂章解决了这个问题,原来出来安全性的考虑,⼀定需要⽤户交互才能使⽤Web蓝⽛,就是说必须是通过点击按钮等⽤户⾏为才能有权限打开蓝⽛,创建⼀个index.js`let EscPosEncoder = require('esc-pos-encoder');let BluetoothPrinter = require('./bluetooth-printer');window.EscPosEncoder=new EscPosEncoder();window.BluetoothPrinter = new BluetoothPrinter();`然后再创建index.html`` ⽤webpack打包运⾏,成功打印。
蓝牙打印方案
蓝牙打印方案概述蓝牙打印方案是一种通过蓝牙无线技术将打印机与其他设备(如智能手机、平板电脑、电脑等)进行连接,并实现打印功能的解决方案。
蓝牙打印方案的出现,极大地简化了打印设备的连接与使用,使得用户可以方便地通过无线方式将文档、照片、标签等信息打印出来。
实现原理蓝牙打印方案主要依赖于蓝牙技术的支持。
蓝牙技术是一种短距离无线通信技术,能够通过2.4 GHz无线频段建立起点对点或点对多点的连接。
通常情况下,蓝牙打印方案需要包含以下几个主要组件来实现: - 打印机:具备蓝牙通信模块以及相关的打印功能。
- 打印机驱动程序:用于与蓝牙设备通信,发送打印任务至打印机。
- 打印应用程序:在蓝牙设备上运行的应用程序,用于生成打印任务并发送给打印机。
蓝牙打印方案的优势蓝牙打印方案相对于传统有线打印方案具有一些显著的优势:1.无线连接:蓝牙打印方案使用蓝牙技术,无需通过电缆与设备连接,大大提升了用户的便捷度和灵活性。
2.简单操作:蓝牙打印方案只需要进行一次配对操作,之后无需额外的设置,用户可以直接通过连接的设备进行打印。
相比之下,传统有线打印方案需要频繁地插拔电缆并进行设置,操作繁琐。
3.灵活性:蓝牙打印方案不受连接距离的限制,用户可以在一定范围内自由移动,无需担心连接断裂。
这对于需要频繁移动位置的用户非常方便。
4.兼容性:蓝牙打印方案通常支持多种操作系统,例如Android、iOS和Windows等,因此可以满足不同设备的需求。
5.低能耗:蓝牙技术具有低能耗的特点,在打印过程中不会对设备的电量造成显著消耗。
使用步骤使用蓝牙打印方案进行打印通常包括以下几个步骤:1.确保设备的蓝牙功能已开启,并且打印机处于可配对模式。
2.在设备上搜索可用的蓝牙设备,找到要连接的打印机。
3.与打印机进行配对操作,根据提示输入配对码。
4.配对成功后,在设备上打开打印应用程序,选择要打印的文档或照片。
5.在打印应用程序中选择要连接的打印机,并设置打印参数(如纸张大小、打印质量等)。
芝柯蓝牙打印机开发文档
XT4131A二次开发包接口函数说明目录1.zp_open (2)2.zp_close (3)3.zp_show_error_msg (4)4.zp_page_create (5)5.zp_page_free (6)6.zp_page_clear (7)7.zp_page_print (8)8.zp_page_set_pen (9)9.zp_page_set_font (10)10.zp_draw_text (12)11.zp_draw_text_ex (13)12.zp_draw_convert_text_ex (15)13.zp_draw_line (17)14.zp_draw_rect (19)15.zp_draw_bitmap (21)16.zp_draw_barcode (23)17.zp_goto_mark_left (25)18.zp_goto_mark_right (26)19.zp_goto_mark_label (27)打开一个串口,作为打印机的通讯端口。
Opens a serial port as a communication port for the printer.●语法 Syntaxbool zq_open(int Port, //The port for communicationsunsigned long BaudRate //serial baud rate );●参数ParamtersPort:设置通信端口,包括但不限于所有可用的 COM 端口。
例如:1,2,3Sets the port for communication, including but not limited to all available COM port. eg. 1,2,3 BaudRate:设置串行波特率。
例如9600,38400,115200Sets the serial baud rate. eg.9600,38400,115200●返回值 Retur n Value如果函数成功,返回值为true,如果函数失败,返回值为false。
济强便携式打印机蓝牙解决方案v1.0
主机搜索不到打印机
i
i
主机搜索不到打印机
开机->长按键A(进入设置菜单)->短 按键A(切换至操作子菜单)->短按键C(选 择操作内容为打印自检页)->短按键D(打 印自检页)。
i
主机搜索不到打印机
如果打印测试页中有“蓝牙配置 信息”说明该机器是蓝牙机器。
i
主机搜索不到打印机
b 其他机型(ULT113x,VMP02)自检页打印
当打印机与手持设备相连接时会 弹出相应的串口号或者设置相应的端 口号。记住此串口号。设置正确的串 口号观察能否打印。若不记得的此串 口号,请重新连接。获取端口号。
i
主机能搜索到打印机但不能连接
解决方法 设置正确的端口号
i
主机能搜索到打印机但不能连接
串口是否被占用 1. 观察是否有别的设备连接打印机,
蓝牙发射功率
发射功率直接影响蓝牙传输的距离,最小 值:-18~-16dBm,最大功率:0~4dBm。分为0 到7这八个等级,当功率为7时蓝牙传输距离最 远。出厂的机器发射功率为7。 可以直接从相应机器的配置工具中读出。 例如 JLP351
i
关于我们的蓝牙
COD码及工作温度
COD码即蓝牙设备标示符,用于辨别设备类型。 我们设备的COD为000680。标示我们设备为打 印机。 打印机工作温度为-20摄氏度到55摄氏度。 存储温度为-40摄氏度到85摄氏度。
串行接口简称串口,也称串行通 信接口(通常指COM接口),是采用 串行通信方式的扩展接口。
i
主机能搜索到打印机但不能连接
主机为电脑
对于主机为电脑,此是我们可以右 击“我的电脑”—>“管理”—>“设备管 理器”—>“端口(COM和LPT)”中可以 看出。
蓝牙打印机工作原理
蓝牙打印机工作原理
蓝牙打印机是一种通过蓝牙技术与其他设备进行无线通信并实现打印功能的设备。
蓝牙打印机的工作原理可以分为两个主要方面:通信和打印。
在通信方面,蓝牙打印机首先需要与其他设备建立蓝牙连接。
当用户通过手机、电脑或其他蓝牙设备发送打印任务时,这些设备会先搜索附近的蓝牙设备,包括蓝牙打印机。
一旦蓝牙打印机被发现,设备可以通过配对确认彼此的身份并建立连接。
建立连接后,设备可以通过蓝牙通信协议与蓝牙打印机进行数据交换。
打印任务通常以二进制数据的形式发送给蓝牙打印机,这些数据包含了需要打印的文档、图像或其他信息。
打印机会接收并解析这些数据,并根据相应的打印设置将其转化为打印指令。
在打印方面,蓝牙打印机会将打印指令转发给内部的打印引擎。
打印引擎根据接收到的指令来控制打印头的移动和喷墨,或者控制纸张的传送和热敏打印等。
通过这些操作,打印机可以将指定的内容打印到纸张或其他介质上。
需要注意的是,蓝牙打印机需要与发送打印任务的设备保持稳定的通信连接才能顺利完成打印任务。
同时,蓝牙打印机通常必须具备相应的驱动程序或者支持通用的打印协议,以便与各种设备兼容并正常工作。
总的来说,蓝牙打印机通过蓝牙技术与其他设备进行通信,并通过打印引擎将打印指令转化为实际的打印操作,最终完成打印任务。
蓝牙打印机原理
蓝牙打印机原理
蓝牙打印机是一种无线打印设备,可以通过蓝牙技术与其他蓝牙设备(如智能手机、平板电脑、电脑等)进行通信和传输打印任务。
蓝牙打印机的工作原理如下:
1. 蓝牙通信:蓝牙打印机内置蓝牙模块,通过蓝牙信号与其他蓝牙设备建立通信链接。
这种无线通信具有一定的覆盖范围,通常在10米左右。
蓝牙设备之间可以通过蓝牙协议互相发送和接收数据。
2. 数据传输:在建立蓝牙通信链接后,蓝牙打印机可以接收来自其他蓝牙设备的打印任务。
这些任务可以是文本、图像、表格等打印数据。
3. 数据解码:蓝牙打印机内部的芯片和处理器可以将接收到的数据进行解码,识别打印任务的类型和内容。
例如,对于文本内容,蓝牙打印机可以将字符和字体信息解析成打印机可理解的指令。
4. 打印处理:在完成数据解码后,蓝牙打印机会开始进行打印的相关处理工作。
这包括将数据转换为打印指令,如控制打印头的移动、控制喷墨喷头的喷墨等。
打印机通常会根据打印任务的要求进行相应的设置,如打印质量和打印速度等。
5. 打印输出:当打印任务的处理完成后,蓝牙打印机会开始进行打印输出。
打
印输出的过程中,打印头会根据接收到的打印指令在纸张上进行相应的打印操作。
蓝牙打印机可以通过喷墨、热敏、激光等不同的打印技术来实现打印输出。
总的来说,蓝牙打印机通过蓝牙通信与其他蓝牙设备建立联系,接收和解码打印任务,并将其转换为打印指令来控制打印机的打印操作。
这种无线打印方式极大地方便了用户的使用,提高了办公效率和打印质量。
同时,蓝牙打印机也具有一定的安全性,因为蓝牙通信需要经过身份验证等安全措施来确保数据的传输安全和可靠性。
Android手机通过蓝牙连接佳博打印机的实例代码
Android⼿机通过蓝⽛连接佳博打印机的实例代码所使⽤的打印机为佳博打印机,⽀持蓝⽛、wifi、usb我所使⽤的是通过蓝⽛来连接。
在⽹上找到⼀个佳博官⽅针对安卓开发的App源码,但是各种的跳转,没有看太懂,所以⼜去问度娘,找到了⼀个不错的⽂章Android对于蓝⽛开发从2.0版本的sdk才开始⽀持,⽽且模拟器不⽀持,测试⾄少需要两部⼿机,所以制约了很多技术⼈员的开发。
1. ⾸先,要操作蓝⽛,先要在AndroidManifest.xml⾥加⼊权限// 管理蓝⽛设备的权限<uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />// 使⽤蓝⽛设备的权限<uses-permissionandroid:name="android.permission.BLUETOOTH" />2.打开蓝⽛获得蓝⽛适配器(android.bluetooth.BluetoothAdapter),检查该设备是否⽀持蓝⽛,如果⽀持,就打开蓝⽛。
// 检查设备是否⽀持蓝⽛adapter = BluetoothAdapter.getDefaultAdapter();if (adapter == null){// 设备不⽀持蓝⽛}// 打开蓝⽛if (!adapter.isEnabled()){Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);// 设置蓝⽛可见性,最多300秒intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);context.startActivity(intent);}3.获取已配对的蓝⽛设备(android.bluetooth.BluetoothDevice)⾸次连接某蓝⽛设备需要先配对,⼀旦配对成功,该设备的信息会被保存,以后连接时⽆需再配对,所以已配对的设备不⼀定是能连接的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种蓝牙打印机的实现方案作为一种短距离无线通信协议,蓝牙技术以其低成本、低功耗、高速率、方便灵活等特点在众多无线解决方案中脱颖而出。
蓝牙10m的工作距离可以很好的满足大多数数字设备的应用场合,如办公室或家庭。
引言打印机是常用的一个设备,摆脱打印机连线所带来的不便,实现无线打印,可以减少桌面上令人不快的电缆,并且可以将打印机远离主机任意搬动,摆放在房间中适合的位置。
本文介绍一种用蓝牙技术来实现主机与打印机的无线连接,实现遥控打印的方法。
蓝牙打印机的设计方案
设计的总体思路如图1所示:
图1 蓝牙打印机设计的总体思路
在主机端用一单片机来仿真打印机进行工作,截取从主机并口传出的数据及控制信号,并通过蓝牙无线连接传送到打印机端。
在打印机侧的单片机则根据所收到的蓝牙数据来仿真主机对打印机进行控制操作,从而实现打印机与主机的蓝牙无线连接。
主机端的蓝牙作为主设备进行查询和发起连接,打印机端的蓝牙则作为从设备等待连接的建立。
单片机
采用89C2051,蓝牙芯片采用爱立信公司生产的支持点对点连接的ROK101-008。
该模块内包括了无线部分、基带控制器、闪存、电源控制模块和内部时钟这五个主要部分,提供UART、PCM、I2C标准接口并内置晶振,其硬件框图如图2所示:
图2 Ericsson ROK 101 008 硬件框图
该方案适用于具有Centronic并行接口的通用打印机。
用户无须更改打印机的驱动程序,只需将含有单片机和蓝牙的两块板子分别连接到主机端和打印机上,就可以进行无线打印了。
整个过程对于原打印机驱动程序是透明的,这样就为打印机用户提供了很大的方便。
单片机对蓝牙模块的控制
图3 蓝牙HCI传输层示意图
蓝牙规范定义了主机控制接口(HCI),它为基带控制器、硬件控制器、硬件状态和控制寄存器等提供了标准的命令接口。
主机通过HCI传输层将控制命令和数据发送给蓝牙模块,而蓝牙模块又通过HCI传输层将其状态信息及数据发还给主机。
HCI传输层的主要目的是实现透明性。
传输层不需要对主控制器驱动程序传送给主控制器的数据可见,这就使接口(HCI)或主控制器能在不影响传输层的基础上升级。
如图3所示,在HCI传输层中至少传送4种不同类型的包——HCI命令、HCI事件、ACL数据和SCL数据。
每个HCI包都以HCI指示头开始,不同的指示头代表着不同类型的HCI包:
0x01 HCI指令分组
0x02 HCI ACL数据分组
0x03 HCI SCO数据分组
0x04 HCI事件分组
传输层主要有下列3种:HCI USB ; HCI PCM; HCI UART。
我们用单片机通过HCI-UART传输子层对蓝牙模块进行控制。
连接的原理图如图4所示:
图4 单片机与蓝牙连接原理图
一般来说,将单片机与蓝牙芯片在短距离内直接相连,便已可保证数据的可靠传输,也无须接CTS和RTS信号进行流量控制。
单片机与蓝牙间的UART通信采用8位数据位,1位终止位,无奇偶校验,使用无类型小Endian格式,即最低位最先发送。
UART通信格式及波特率均可通过单片机向蓝牙发送HCI指令来进行调整。
ROK-101-008芯片最高可支持460.8Kbps的UART速率。
发送给蓝牙模块的第一条HCI指令应该是软件复位(Soft Reset)命令,当蓝牙执行完一条指令后,将返回一个带有状态参数信息的命令完成事件(Command_Complete_Event),以告知主机(单片机)命令执行的情况。
当完成软件复位后,要使得蓝牙
模块做为从设备等待来自其他蓝牙设备的查询和连接发起,我们还需设置一些计时器的值,进行一系列的参数设定。
即使是作为主设备的主机端蓝牙,在进行查询和建立连接之前也需要做上述的参数设定工作。
这些需要设置的参数主要有下列几个:
* Set Event Filter(设置事件过滤器)
* Write Scan Enable(设置扫描参数,如是否可以进行查询和寻呼)
* Write Authentication Enable(设置是否需要进行验证)
* Write Page Timeout(设置寻呼超时,一般该值可以设为7s) 打印机端的蓝牙模块在设置完上述各参数后便已经做好了从设备的准备,等待连接的建立。
而在主机端的蓝牙模块还需进行查询(Inquiry)过程以取得远端设备的蓝牙地址,并根据查询得到的蓝牙地址来发起连接。
一旦蓝牙连接被建立之后,便可以进行数据的收发,以实现蓝牙无线打印。
单片机与主机以及打印机的连接
单片机和主机以及打印机的接口电路十分简单,以与打印机连接为例,电路如图5所示:
图5 单片机与打印机连接原理图将89C2051的P1口直接与打印机的数据口相连,用P3.7来采样打印机的BUSY信号。
由于主机与打印机的连线一般较长,打印机一侧一般均有匹配电阻,因此作为STROBE信号输出的P3.3不能与打印机直接相连,这里我们用一与非门来增加驱动能力以实现控制。
当单片机接收到主机通过蓝牙发送过来的数据后,在打印机侧模拟主机对打印机进行控制操作。
首先将要发送给打印机的数据从P1口输出,随后从P3.3经过门电路反向产生一个负脉冲,作为选通信号发送给打印机,侦听P3.7上的BUSY信号,当该信号电平为低时,则表示本次数据已被打印机接收,可以发送下一个数据。
结语
以上方案并不涉及打印机的具体型号,也无须改变用户打印机的驱动程序,因而适用于大多数的通用打印机。
这种用单片机通过UART传输层对蓝牙模块进行控制的方
法,不仅仅适用于蓝牙打印机的研制,还适应于各类嵌入式的蓝牙系统。