项目地址:https://github.com/dyl169/WAPP_printer.git有需要的可以参考一下
1.在需要调用蓝牙的页面中
初始化是传入设备的主服务UUID base.Ble.initBle(['FFF0', '0A71']);
2.在onLoad中执行监听函数(记得在onUnload中 remove掉事件监听)
//初始化所有监听
initListen: function() {
//监听蓝牙可用状态
base.Event.listen(base.EventModel.EVENT_BLESTATE, function(data) {
if (data.code) {
console.log('蓝牙已打开')
base.blestate = true;
} else {
console.log('蓝牙已关闭')
base.blestate = false;
}
})
//监听扫描设备
base.Event.listen(base.EventModel.EVENT_SCAN, function(data) {
if (data.stop) {
console.log('停止扫描');
that.setData({
bleSearchIng: false,
})
} else {
var device = data.datainfo[0];
console.log('扫描到的设备 : ' + JSON.stringify(device));
that.data.deviceArray.push(device);
that.setData({
deviceArray: that.data.deviceArray,
showDeviceDialog: true,
})
}
})
//监听蓝牙连接状态
base.Event.listen(base.EventModel.EVENT_CONNSTATE, function(data) {
console.log('连接状态变化');
if (data.code == true) {
console.log('index 连接成功')
for (var i = 0; i < that.data.deviceArray.length; i++) {
if (that.data.deviceArray[i].deviceId === data.datainfo) {
that.data.connDevice = that.data.deviceArray[i];
}
}
that.setData({
connSucced: true,
connDevice: that.data.connDevice,
})
} else {
that.setData({
connSucced: false,
})
}
})
//监听蓝牙值变化
base.Event.listen(base.EventModel.EVENT_RECEIVE, function(result) {
if (result.code == true && pageState == 'onLoad' || pageState == 'onShow') {
var data = result.datainfo;
console.log('main 页面接受到消息:' + data);
}
})
},
3.如果打印机无法打印 请查看打印机说明书 知否支持TSPL或ESC指令指令 (本demo使用的佳博答应机)
自行将PrintUtil.js中的打印指令修改为对应的打印指令即可
我这边为什么打印文字的时候 只是转了一下方向,然后打印出来的文字只有一半是怎么回事
可以打印图片吗
我换了个佳博的打印机,果然使用同样的代码就可以支持打印了。
其实换成其他打印机也可以,首先initBle的时候设置serviceID (这里是为了搜索到主服务ID为设置的serviceID的蓝牙设备),然后修改打印机对应的不同的打印指令也可以,
就是不知道怎么修改。哥哥指引一下路线呗,在何处修改,有案例吗?
将其修改为你需要的指令就可以了
大佬,我调你的程序链接上蓝牙打印机了,执行发送是成功的,但是打印机没反应。
问了打印机厂商,他们说是微信做了传输速率的限制,每次只能传输20个字节?有这个问题吗?
另外看到各位大佬说更改打印指令,不知道如何更改,我看你的程序好像也没有特指哪种打印协议TSC、ESC。能告知一下吗?
我也看到你有数据分包的代码,
另外,
base.Ble.initBle(['FFF0', '0A71']);
这个设备的id,你是怎么找到并配置的,这里搞了我好久,我是从主服务那边遍历出来4个,一个个找到然后配置上去的。才能扫描出来这个设备并连接上去的。
base.Ble.initBle(['18F0', '0A71']);
大佬,你这demo支持esc命令吗
指令方式你可以自己修改成别其他的命令
这里的主服务ID是在serviceId吗?
是的
这个打印机好贵啊
这样的 是不是不支持二次开发 是专门定制好的?
你可以自己改改 ,打印指令部分, 蓝牙连接部分不需要改
就是 蓝牙部分就是连接设备的 打印指令 改成 别的打印机适配就行吗 ok 可以试试
蓝牙部分 能否做个 没又连接蓝牙的提示 小程序有没有 能做个开关直接开启设备蓝牙的
你可以自己研究一下文档https://developers.weixin.qq.com/miniprogram/dev/api/wx.readBLECharacteristicValue.html
运行了一下代码 是 真机测试 扫码中直接 调到扫描结束 您是代码里面设置了 蓝牙匹配就是 只能是这个打印机还是 可以搜到附近所有蓝牙设备
配置了蓝牙扫描的主服务UUID
打印机型号 什么 可以支持这个二次开发
佳博GP1124T
可以用了,谢谢
好的
可以打印了,谢谢
我用了一下,标签打印出来了,文字没有 为什么??
https://developers.weixin.qq.com/community/develop/doc/000aa2cb06cf386385d71dedd56404?jumpto=comment&commentid=000c06d0c1c7402117f735549594
你的问题应该和这个一样
谢谢 就是这个场景