2***@qq.com
2***@qq.com
  • 发布:2017-12-26 11:21
  • 更新:2020-08-31 16:42
  • 阅读:4369

Native.js 安卓连接蓝牙打印机【可连续打印】

分类:Native.js

自己摸索了一下,并参考其他人的代码,并修复了原来代码存在的问题,
问题1:字符串的getBytes函数,返回null【需要通过new的方式创建字符串】
问题2:初始化打印一次,之后无法使用【不要重复调用device.createInsecureRfcommSocketToServiceRecord(uuid)或重复引入CLASS】

代码如下,可正常运行【注意,蓝牙打印机必须先匹配,保证手机蓝牙打开】

    mui.plusReady(function() {  
                main = 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();  
                BAdapter.cancelDiscovery(); //停止扫描  
                device = BAdapter.getRemoteDevice("DC:1D:30:25:19:23");//这里是蓝牙打印机的蓝牙地址  
                plus.android.importClass(device);  
                bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);  
                plus.android.importClass(bluetoothSocket);  
            });  

            function print() {  

                if(!bluetoothSocket.isConnected()) {  
                    console.log('断开了,需要重新连接,连接中');  
                    bluetoothSocket.connect();  
                }  

                if(bluetoothSocket.isConnected()) {  
                    console.log('连接成功');  
                    var outputStream = bluetoothSocket.getOutputStream();  
                    plus.android.importClass(outputStream);  
                    var s = plus.android.importClass('java.lang.String');  
                    var string = new s("测试数据"+new Date().getMilliseconds()+'\n\n\n\n');//必须以创建字符串对象的形式创建对象,否则返回NULL  
                    var bytes = string.getBytes('gbk');  
                    console.log(bytes);  
                    outputStream.write(bytes);  
                    outputStream.flush();  
                } else {  
                    console.log('fail');  
                }  

            }  

至于打印的内容和格式,请参考各自打印机提供的打印指令集,把它拼成字符串调用getBytes函数即可打印。

1 关注 分享
1***@qq.com

要回复文章请先登录注册

haapy

haapy

回复 宁夏 :
方便交流下么,我也是这个打印机,但是无法打印成功
2020-08-31 16:42
宁夏

宁夏

打印二维码怎么打印。。。佳博的打印机,打印字符可以的,二维码不会整,求救
2020-06-04 18:00
武点点

武点点

生产环境可能会有很多商户用不同的打印机,这个蓝牙地址能否弄成获取的方式呢?
2019-06-03 11:29
c***@163.com

c***@163.com

方便 把 整个打印代码分享一下么
2019-05-10 16:12
e***@163.com

e***@163.com

牛逼
2018-11-27 13:25
2***@qq.com

2***@qq.com (作者)

注意替换自己的蓝牙打印机的地址
2017-12-26 11:27