我正在开发一个Android应用程序,它通过蓝牙从车辆的Obd适配器读取Obd数据......我在初始化适配器时遇到问题 . 我按顺序发送了以下Obd命令来初始化obd:
atz(收到OK)
atsp0(收到OK)
ate0(收到OK)
0100(这是发生问题的部分)......
有时这个命令我会收到BUSINIT:ERROR ..然后对于每个车辆命令(AT命令除外),重复相同的错误 .
我想知道Exact初始化序列?
看来你的obd初始化和obd协议选择失败了 . 您应该按照以下步骤操作:
AT D AT Z AT E0 AT L0 AT S0 AT H0 AT SP 0
当协议选择命令响应没有如下所列的任何错误时,您的连接正常,您可以请求新命令,如'0100'命令 .
Errors:
无法连接
BUS INIT ...错误
?
没有数据
已停止
错误
Command Explanation:
AT D - >将全部设置为默认值
AT Z - >重置Obd
在E0 - >回声
AT L0 - >换行
在S0 - >空间关闭
在H0 - > Headers off
AT SP 0 - >将协议设置为0“自动”,搜索所有协议并使用适当的协议连接该协议
对于AT SP命令,如果您知道车辆的obd接口协议,则可以选择除自动以外的特定协议并搜索所有可能的协议 . 您可以使用不同的输入:
Protocol Parameters: Hex[0,1,2, ... ,B,C]
自动选择协议并保存 . AUTO - > 0
41.6 kbaud SAE_J1850_PWM - > 1
10.4 kbaud SAE_J1850_VPW - > 2
5波特初始化ISO_9141_2 - > 3
5波特初始化ISO_14230_4_KWP - > 4
快速初始化ISO_14230_4_KWP_FAST - > 5
11位ID,500 kbaud ISO_15765_4_CAN - > 6
29位ID,500 kbaud ISO_15765_4_CAN_B - > 7
11位ID,250 kbaud ISO_15765_4_CAN_C - > 8
29位ID,250 kbaud ISO_15765_4_CAN_D - > 9
29位ID,250 kbaud(用户可调)SAE_J1939_CAN - > A.
11位ID(用户可调),125 kbaud(用户可调)USER1_CAN - > B.
11位ID(用户可调),50 kbaud(用户可调)USER2_CAN - > C.
“AT E0”
“AT L0”
“AT ST 00”
“AT SP 00”
适合我 . 还有一件事......我一个接一个地发送所有这些命令,延迟时间为500毫秒!没有延迟,初始化几乎每次都会失败,不要忘记,这是蓝牙,它需要更多的时间来发送和接收响应......
如果硬件完全兼容OBD-II且汽车符合OBD-II标准,则初始化顺序应该有效 . 如果仍然在0100命令上出现错误,请检查点火开关是否已打开且硬件是否完全正常运行 .
0100是第一个到达实际车辆的命令 . AT命令是(ELM327)-chip . 因此OBD连接器和汽车之间的通信出了问题 . 您的应用和连接器之间的连接很好 .
Obdkey最有可能是关于OBD-II的兼容性 . 请尝试使用现有应用程序来证明,如果它不起作用,您的汽车或连接器出现问题 .
顺便说一句:说明你有哪种obd-II适配器,也许你的车是有帮助的 .
我只想把我的两分钱放进去 . 我最近在C和LabVIEW中开发了一个应用程序来与基于ELM-327的蓝牙模块进行通信,以便从我汽车的ECU中检索信息 . 有时初始化序列失败,有时它会起作用 . 我发现有时没有正确检测到ECU协议初始化的'关键字'字节 . 我认为我的蓝牙模块是问题,因为事实证明它是一个合法的ELM-327的中国克隆 . 我怎么知道的?如果您发出命令ATI,它将回复“ELM-327 ver.1.5”,并且根据制造商的说法,它们永远不会发布1.5版本= D
对我有用的是这样的:
开放式沟通,发送ATZ
ATSP0
ATSS(这启用了推荐的协议搜索顺序)
010D
如果4.失败,则关闭通信,等待3秒或更长时间并转到1
更多OBD-II或AT命令 .
BUSINIT:... ERROR响应意味着ELM-327无法完成ECU协议的启动顺序 . 此外,在发送OBD-II命令(如010C)之前,如果您可以使用ISO-9141-2或ISO-14230-4 KWP协议,则可以使用ATSI命令初始化通信 .
如果在成功自动检测后将命令ATDP发送到ELM-327,您可以找到您的汽车使用的协议 .
希望这有帮助 .
5 回答
看来你的obd初始化和obd协议选择失败了 . 您应该按照以下步骤操作:
当协议选择命令响应没有如下所列的任何错误时,您的连接正常,您可以请求新命令,如'0100'命令 .
Errors:
无法连接
BUS INIT ...错误
?
没有数据
已停止
错误
Command Explanation:
AT D - >将全部设置为默认值
AT Z - >重置Obd
在E0 - >回声
AT L0 - >换行
在S0 - >空间关闭
在H0 - > Headers off
AT SP 0 - >将协议设置为0“自动”,搜索所有协议并使用适当的协议连接该协议
对于AT SP命令,如果您知道车辆的obd接口协议,则可以选择除自动以外的特定协议并搜索所有可能的协议 . 您可以使用不同的输入:
Protocol Parameters: Hex[0,1,2, ... ,B,C]
自动选择协议并保存 . AUTO - > 0
41.6 kbaud SAE_J1850_PWM - > 1
10.4 kbaud SAE_J1850_VPW - > 2
5波特初始化ISO_9141_2 - > 3
5波特初始化ISO_14230_4_KWP - > 4
快速初始化ISO_14230_4_KWP_FAST - > 5
11位ID,500 kbaud ISO_15765_4_CAN - > 6
29位ID,500 kbaud ISO_15765_4_CAN_B - > 7
11位ID,250 kbaud ISO_15765_4_CAN_C - > 8
29位ID,250 kbaud ISO_15765_4_CAN_D - > 9
29位ID,250 kbaud(用户可调)SAE_J1939_CAN - > A.
11位ID(用户可调),125 kbaud(用户可调)USER1_CAN - > B.
11位ID(用户可调),50 kbaud(用户可调)USER2_CAN - > C.
“AT E0”
“AT L0”
“AT ST 00”
“AT SP 00”
适合我 . 还有一件事......我一个接一个地发送所有这些命令,延迟时间为500毫秒!没有延迟,初始化几乎每次都会失败,不要忘记,这是蓝牙,它需要更多的时间来发送和接收响应......
如果硬件完全兼容OBD-II且汽车符合OBD-II标准,则初始化顺序应该有效 . 如果仍然在0100命令上出现错误,请检查点火开关是否已打开且硬件是否完全正常运行 .
0100是第一个到达实际车辆的命令 . AT命令是(ELM327)-chip . 因此OBD连接器和汽车之间的通信出了问题 . 您的应用和连接器之间的连接很好 .
Obdkey最有可能是关于OBD-II的兼容性 . 请尝试使用现有应用程序来证明,如果它不起作用,您的汽车或连接器出现问题 .
顺便说一句:说明你有哪种obd-II适配器,也许你的车是有帮助的 .
我只想把我的两分钱放进去 . 我最近在C和LabVIEW中开发了一个应用程序来与基于ELM-327的蓝牙模块进行通信,以便从我汽车的ECU中检索信息 . 有时初始化序列失败,有时它会起作用 . 我发现有时没有正确检测到ECU协议初始化的'关键字'字节 . 我认为我的蓝牙模块是问题,因为事实证明它是一个合法的ELM-327的中国克隆 . 我怎么知道的?如果您发出命令ATI,它将回复“ELM-327 ver.1.5”,并且根据制造商的说法,它们永远不会发布1.5版本= D
对我有用的是这样的:
开放式沟通,发送ATZ
ATSP0
ATSS(这启用了推荐的协议搜索顺序)
010D
如果4.失败,则关闭通信,等待3秒或更长时间并转到1
更多OBD-II或AT命令 .
BUSINIT:... ERROR响应意味着ELM-327无法完成ECU协议的启动顺序 . 此外,在发送OBD-II命令(如010C)之前,如果您可以使用ISO-9141-2或ISO-14230-4 KWP协议,则可以使用ATSI命令初始化通信 .
如果在成功自动检测后将命令ATDP发送到ELM-327,您可以找到您的汽车使用的协议 .
希望这有帮助 .