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

使用CoreBluetooth连接OHAUS秤获取重量失败问题排查

OHAUS秤蓝牙通信无数据返回问题排查

已知信息

  • 已成功蓝牙连接OHAUS秤,获取到UUID为2456e1b9-26e2-8f83-e744-f34f01e9d703的CBCharacteristic
  • 发送重量查询命令后,didWriteValueFor回调收到空值,peripheralDidUpdateValueForCharacteristic无任何数据返回

执行代码

命令发送代码

// 发送命令到秤
let data = "IP"
let valueString = (data as NSString).data(using: String.Encoding.utf8.rawValue)
self.scalePeripheral.writeValue(valueString!, for: scaleCharchteristic, type: CBCharacteristicWriteType.withResponse)

预期接收数据的回调

func peripheral(_ peripheral: CBPeripheral, didWriteValueFor characteristic: CBCharacteristic, error: Error?){
    guard 
        let characteristicValue = characteristic.value,
        let characteristicASCIIValue = NSString(data: characteristicValue, encoding: String.Encoding.utf8.rawValue)
    else {
        return
    }
    print("\((characteristicASCIIValue as String))")
}

蓝牙命令参考

OHAUS蓝牙命令规范

可能的问题点及解决方向

  • 命令格式不完整:从参考图的命令规范来看,OHAUS秤的命令通常需要附加终止符(如\r或\n)。仅发送"IP"可能无法被设备识别,尝试修改命令为"IP\r"或"IP\n"后重新发送。
  • 未订阅特征通知:目标特征需要同时支持写入和通知/指示权限,且必须主动订阅通知才能接收设备返回的数据。执行writeValue前,先调用self.scalePeripheral.setNotifyValue(true, for: scaleCharchteristic)开启通知。
  • 回调逻辑错误:didWriteValueFor回调仅用于确认命令是否写入成功,设备返回的重量数据不会通过该回调的characteristic.value返回,而是通过peripheral(_:didUpdateValueFor:error:)回调接收。需要确保正确实现该代理方法。
  • 编码格式不匹配:确认设备返回数据的编码格式,部分OHAUS设备可能使用ASCII而非UTF-8,尝试切换编码为String.Encoding.ascii.rawValue解析数据。
  • 设备状态异常:检查秤是否处于稳定就绪状态,是否被设置为禁止数据输出模式。可以先用官方配套工具测试通信,排除硬件或设备设置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:02:51