gpt4 book ai didi

ios - 无法从 OBD 2 读取数据

转载 作者:行者123 更新时间:2023-11-28 06:17:37 24 4
gpt4 key购买 nike

我正在使用 OBD2 设备从不同的车辆获取数据。应用程序和 OBD2 之间的通信是使用蓝牙 LE 完成的。当我使用 OBD2 设备时,我得到服务 UUID = FFE0 和特征 UUID = FFE1。我可以使用这个特性来编写 PID,并且我可以毫无问题地从我的汽车中获取数据。但是当我使用不同的 OBD2 时,我得到服务 UUID = FFF0 和 UUID FFE1(具有属性.write)和 FFE2(具有属性.read)的两个特征。当我尝试将 PID 写入具有写入属性的特性时,出现错误

Error Domain=CBATTErrorDomain Code=10 "The attribute could not be found."

会出现什么问题?

最佳答案

虽然BLE本身是标准化的,但是BLE中的OBD2服务还没有官方标准。为了使用多个适配器,您的应用程序应该包含适当的设备扫描。

为此,您需要探测设备,连接到您找到的所有设备,然后启动服务扫描并遍历所有服务及其特征。

如果您找到一个可写的特征,那么这就是您可以写入的 channel 。如果您发现一个可读的特征,那么这将是从哪里读取的 channel 。这不一定会导致两种特性,有些适配器使用相同的方式进行读写。

使用满足您期望的第一个服务,然后尝试发送 ATZ\r\n(或您在传输级别支持的任何内容)并查看这是否是有效的 OBD2 适配器响应。

这样您就不需要预先知道服务 UUID,并且可以使您的应用程序与大多数 BLE 适配器一起工作。

(当然,你下次可以记住服务的UUID,除非用户告诉你,否则你不必再次探测。)

关于ios - 无法从 OBD 2 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44720593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com