You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Web Bluetooth调用requestDevice报值无法转换为序列错误如何解决

问题根因

报错和你填写的UART Service UUID正确性无关,是参数类型不符合Web Bluetooth API的规范要求:
optionalServices字段要求传入UUID组成的数组(序列类型),你的代码里直接把单个UUID字符串赋值给了这个字段,字符串无法被转换为API要求的序列结构,因此抛出类型错误。从你打印的options日志也能验证问题:"optionalServices":"6e400001-b5a3-f393-e0a9-e50e24dcca9e"对应值是字符串,不是数组。

修复方案

将需要声明的可选服务放在数组中再赋值给optionalServices即可,修改对应代码片段:

if (document.querySelector('#allDevices').checked) {
    options.acceptAllDevices = true;
    // 即使只需要声明1个服务,也必须用数组包裹
    options.optionalServices = [UARTService];
} else {
    options.filters = filters;
    // 非全设备模式下如果也要访问UART服务,同样要注意services/optionalServices字段传数组格式的UUID列表
}

注意:Web Bluetooth API中所有声明服务、特征值列表的参数(包括筛选规则里的services字段、optionalServices字段),都要求传入数组类型,哪怕只有1个UUID需要声明,也不能直接传字符串值。

内容的提问来源于stack exchange,提问作者ugmurthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:51:28