在微信的小程序api中,有个wx.startLocalServiceDiscovery(Object object),开始搜索局域网下的 mDNS 服务。它可以搜索局域网内的网络打印机。
下面的代码片段展示怎么使用该API扫描局域网内的打印机,核心代码如下:
data: {
services:[],
}
startMdns: function () {
var that = this
wx.showLoading({
title: '扫描中...',
})
wx.startLocalServiceDiscovery({
serviceType: '_http._tcp',
success: function (res) {
wx.onLocalServiceFound((result) => {
// 发现服务后,添加到services数组中
that.data.services.push(result)
})
},
fail: function (err) {
console.log(err)
}
})
// 设置超时函数,3500ms后结束扫描
setTimeout(() => {
wx.hideLoading({
success: (res) => {},
})
wx.stopLocalServiceDiscovery({
success: (res) => {
},
})
}, 3500);
},
万能云打印小程序,让你的网络打印机秒变微信手机打印机。
只要你的打印机与手机在同一 wifi,一键自动搜索、匹配您的打印机型号,不用安装APP,不用安装驱程。
几乎支持所有品牌的打印机,支持常用办公文档、图片打印。简单易用,完全免费,请微信搜索“万能云打印"小程序试用。
请问你是在怎么在打印机设置他的serviceType为_http._tcp. 的
请问扫描到之后是怎么连接和打印的?是交给云端/后端程序才能处理?还是有另外的接口可以处理?今天才开始看,没太明白整体的流程。
现在理论上是大致是分为四种打印:
第一种就是您说的局域网直连打印,但小程序貌似还不支持;
第二种就是蓝牙打印,利用官方提供的蓝牙搜索、传输数据api配合首次用户手动连接/二次自动连接就能进行打印;
第三种是wifi形式,需要针对每个品牌的wifi打印机进行适配开发,再让用户手动根据每台打印机编号进行配置;
还有一种是直接发送打印命令给网站后端程序,由后端完成连接和打印工作,前台小程序只负责传递命令。类似第三种,减少了适配和配置工作,但需要自行开发/第三方开发的后端程序。