我正在尝试使用OBD2观察我的汽车的速度,以尝试硬件是否正常运行,我已经使用应用程序“ Auto Doctor”运行了。
但是我需要更多功能,因此我开始创建自己的应用程序

要将命令发送到特征,请使用以下代码:

var commandSended = String() {
        didSet {
            if let peripheral = self.peripheralConnected {
                for char in characteristicConnected {
                    peripheral.writeValue(self.commandSended.data(using: .utf8)!, for: char, type: .withoutResponse)
                    peripheral.writeValue(self.commandSended.data(using: .ascii)!, for: char, type: .withoutResponse)
                    peripheral.readValue(for: char)
                }
            } else {
                self.myTerminal.printToTerminalCommand("You are not connected to the peripheral")
            }
        }
    }


featureConnected:是否找到所有特征

我每次向特征发送的命令都会收到相同的字节,并且我无法使用utf8或ascii对其进行解码。

希望我能为您提供足够的信息。

最佳答案

(几乎所有)OBD2适配器的答案都是ASCII字符串响应,因此您需要将NSData解码为ASCII。要提取实际的有效载荷以响应您的需求,您需要了解有关解码各种汽车协议的知识。许多此类信息可从网络上免费获得,对于某些事情,您可能想购买官方的SAE标准。

也就是说,即使您使用的是Swift,您也可能会对使用OBD2库感兴趣,因为它可以为您完成所有繁重的工作。实际上,我写了一篇,可以从https://github.com/mickeyl/LTSupportAutomotive下载。

关于ios - 与OBD2的Swift Core蓝牙通信,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57755222/

10-09 01:27