Swift如何将AT命令发送到OBD2设备?

时间:2016-07-01 22:33:19

标签: swift obd-ii

我已经知道如何与OBD2适配器建立wifi连接,但我不知道如何从中请求信息。像010C一样是以十六进制形式返回引擎RPM的命令,但是如何将“010C”发送到OBD2适配器?我可以为Java和Python等语言找到答案,甚至是OBD框架,但对swift没有任何帮助。感谢。

3 个答案:

答案 0 :(得分:0)

我们的java实现需要转换String消息,例如" 010C"或者" ATZ"到byte []然后将这些字节发送到OBD2适配器。我想你也必须为快速做同样的事情。

以下是使用OBD2适配器的资源,可以帮助您:http://elmelectronics.com/DSheets/ELM327DS.pdf

答案 1 :(得分:0)

如果您已经建立了与WiFi适配器的套接字通信,那么要么将套接字绑定到一对NSStream并使用这些套接字发送/接收数据,要么使用CoreFoundation API或低-level posix API用于发送/接收数据。

你可能想要更高级别的东西。我在https://github.com/mickeyl/LTSupportAutomotive为iOS和macOS创建了一个OBD2库。它是用Objective-C编写的,需要使用Swift桥接标题才能使它对您有用,但这可能是您深入了解该主题的好方法。

答案 2 :(得分:0)

您需要了解 OBD 协议,例如:ISO 9141-2KW-2000ISO 14230-4SAE J1850CAN ISO 15765-4(11 位或 29 位)。

查看此 reference 以获取更多信息。

您可以找到PID OBD2 here