在以往的认知中,调用蓝牙一般都是移动设备APP类软件居多,在网页系统调用蓝牙接触还是首次。
查找得知,网页浏览器已经嵌套了这样的API navigator.bluetooth,但是不多通过测试发现移动端平板和手机自身系统带的浏览器是不具备这个模块的,只有谷歌、edge可以,我喜欢的夸克居然也不行。模块的使用限制,必须是https协议的网址可以调用,本地开发需要localhost地址。
大致使用的API接口有 requestDevice()
acceptAllDevices,值是true和false,表示忽略设备信息,获取蓝牙检测到的所有设备。
filters,optionalServices,这里一般填的是蓝牙设备的UUID。一般是在用户选择对应设备后都会有一个UUID,若是想每次打开蓝牙请求只展示想要的设备这里可以将自己的UUID写死。
首先,请求这个接口API navigator.bluetooth.requestDevice()会调起浏览器选择蓝牙设备的弹框,选择后会在.then(device)这里返回用户选中的设备id,这个需要用变量保存下面有用到。
return device.gatt.connect(); 这个是保持通讯,这里使用的是.then()连续调用这样会返回设备服务
.then(serve),return server.getPrimaryServices();这会返回所有的服务特征,之前保存的设备ID就能用到了,其实这一步存在疑惑既然已经选了哪个设备,这个调用应该返回的就是那个设备的服务,为了防止还是做了遍历将对应的打印机特征返回(这里是连接的佳博的蓝牙打印机)。
printerCharacteristic .writeValueWithoutResponse()发送蓝牙讯息使用的是这个方法,就是之前保存的特征调用。