我试图通过蓝牙将移动请求数据传送到网络浏览器(笔记本电脑),所以我的第一步是将系统蓝牙连接到网络浏览器,但是使用下面的代码获取错误信息。或者有没有其他方法通过蓝牙将移动设备连接到网络浏览器来传输数据?
navigator.bluetooth.requestDevice().then(
function (d){console.log("found Device !!");},
function (e){console.log("Oh no !!",e);});
我在chrome上尝试了上面的代码。
错误讯息:
TypeError: Failed to execute 'requestDevice' on 'Bluetooth': 1 argument required, but only 0 present
答案 0 :(得分:3)
您可能需要阅读https://developers.google.com/web/updates/2015/07/interact-with-ble-devices-on-the-web,其中显示了您必须传递的所有必填选项:
例如,请求蓝牙设备通告蓝牙 GATT电池服务就是这么简单:
navigator.bluetooth.requestDevice({ filters: [{ services: ['battery_service'] }] })
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
如果您的蓝牙GATT服务不在标准化蓝牙GATT服务列表中,您可以 提供完整的蓝牙UUID或短16或32位格式。
navigator.bluetooth.requestDevice({
filters: [{
services: [0x1234, 0x12345678, '99999999-0000-1000-8000-00805f9b34fb']
}]
})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
你也可以 根据要宣传的设备名称请求蓝牙设备 使用
name
过滤器键,或者甚至是带有此名称的前缀namePrefix
过滤关键字。请注意,在这种情况下,您还需要 定义optionalServices
密钥以便能够访问某些服务。如果 你不会在以后尝试访问它们时收到错误。
navigator.bluetooth.requestDevice({
filters: [{
name: 'Francois robot'
}],
optionalServices: ['battery_service']
})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
答案 1 :(得分:1)
正如错误消息所示,您需要为requestDevice(options)
方法提供选项对象。见https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth/requestDevice