我正在开发一款Android应用程序,它通过蓝牙从车辆的OBD适配器读取OBD数据......我现在面临的问题,同时初始化适配器。 我发出以下顺序OBD命令初始化OBD:
- ATZ(接收到的OK)
- atsp0(收稿OK)
- ATE0(收稿OK)
- 0100(这是问题发生的部分)...
有些时候,这个命令我收到BUSINIT:错误。而重复,每车的命令(除AT命令)同样的错误以后。
我想知道确切的初始化序列?
我正在开发一款Android应用程序,它通过蓝牙从车辆的OBD适配器读取OBD数据......我现在面临的问题,同时初始化适配器。 我发出以下顺序OBD命令初始化OBD:
有些时候,这个命令我收到BUSINIT:错误。而重复,每车的命令(除AT命令)同样的错误以后。
我想知道确切的初始化序列?
看来你的OBD的初始化和OBD协议选择失败。 您应该遵循以下步骤:
AT D
AT Z
AT E0
AT L0
AT S0
AT H0
AT SP 0
当没有任何错误协议选择响应命令像下面列出,您的连接正常,你可以要求像“0100”命令的新命令。
错误:
命令解释:
在d - >设置都为默认值
设为z - >重置OBD
AT E0 - >回声关闭
AT L0 - >换行关闭
AT S0 - >关闭空间
AT H0 - >头关
AT SP 0 - >将协议设置为0“自动”,搜索所有协议,并与该OBD适当的协议连接
在SP命令,如果你知道你的车的OBD接口协议,可以选择比作汽车等特定协议和搜索所有可能的协议。 你可以使用不同的输入:
协议参数:己烷[0,1,2,...,B,C]
自动选择协议和保存。 AUTO - > 0
41.6千波特SAE_J1850_PWM - > 1
10.4千波特SAE_J1850_VPW - > 2
5个波特初始化ISO_9141_2 - > 3
5波特初始化ISO_14230_4_KWP - > 4
快速初始化ISO_14230_4_KWP_FAST - > 5
11位ID,500千波特ISO_15765_4_CAN - > 6
29位ID,500千波特ISO_15765_4_CAN_B - > 7
11位ID,250千波特ISO_15765_4_CAN_C - > 8
29位ID,250千波特ISO_15765_4_CAN_D - > 9
29位ID,250千波特(用户可调)SAE_J1939_CAN - >甲
11位ID(用户可调),125千波特(用户可调)USER1_CAN - >乙
11位ID(用户可调),50千波特(用户可调)USER2_CAN - “ç
“AT E0”
“AT L0”
“AT ST 00”
“AT SP 00”
我的作品。 还有一件事......我把所有这些命令先后与500毫秒的延迟! 没有延迟初始化几乎每一次失败了,不要忘了,这是蓝牙,它需要更多的时间来发送和接收响应......
如果硬件是完全OBD-II兼容和汽车OBD-II兼容你的初始化序列应该工作。 如果仍然出现在0100命令错误,检查点火是与硬件完全正常运行。
0100是第一个命令,它会到达实际的汽车。 AT命令是职责范围(ELM327)片内。 所以,什么是错与OBD连接器和汽车之间的通信。 您的应用程序和连接器之间的连接是好的。
Obdkey是最有可能是正确的关于OBD-II兼容。 请尽量使用现有的应用程序来证明,如果它不工作,什么是错的,你的车或连接器。
顺便说一句:这是有帮助的,以说明你具有OBD-II适配器,也许你的车。
只是希望把我的两分钱中最近我一直在开发C ++应用程序和LabVIEW来传达给ELM-327 - 基于蓝牙模块来检索我的车的ECU信息。 有时初始化序列失败,有时它的工作原理。 什么我发现是,有时不能正确检测ECU协议初始化的“关键字”字节。 我想我的蓝牙模块的问题,因为它原来是一个合法的ELM-327的中国酷龙。 我怎么知道呢? 如果发出命令ATI,它会回复“ELM-327版本1.5”,并根据制造商,他们没有发布过1.5版本= d
有什么工作对我来说是这样的:
该BUSINIT:...错误的响应就是ELM-327无法完成日常的ECU协议的启动顺序。 此外,发送OBD-II命令,像010C之前,你可以初始化与ATSI命令的通信,如果你能碰巧使用ISO-9141-2或ISO-14230-4 KWP协议。
你可以找到你的车使用什么协议,如果你succesfull自动检测后发送命令ATDP到ELM-327。
希望这可以帮助。