Bluetooth 蓝牙OBDII/ELM提供重复数据作为响应

Bluetooth 蓝牙OBDII/ELM提供重复数据作为响应,bluetooth,arduino,obd-ii,elm327,Bluetooth,Arduino,Obd Ii,Elm327,我有一个HC-05连接到Arduino系列3。我还能够成功地与车上的OBD2-ELM适配器配对 我的草图中有一个代码,用于与OBD/ELM进行简单通信 if (Serial3.available()) { Serial.write(Serial3.read()); } if (Serial.available()) { Serial3.write(Serial.read()); } 挑战在于: 如果我键入ATZ,我会得到“ELM327 v2.1>” 我输入ATTP5,得到“OK

我有一个HC-05连接到Arduino系列3。我还能够成功地与车上的OBD2-ELM适配器配对

我的草图中有一个代码,用于与OBD/ELM进行简单通信

if (Serial3.available()) {
    Serial.write(Serial3.read());
}
if (Serial.available()) {
    Serial3.write(Serial.read());
}
挑战在于:
如果我键入ATZ,我会得到“ELM327 v2.1>”
我输入ATTP5,得到“OK>”
键入ATRV,返回“12.6”
但是如果我键入0105,我会得到不同的响应,例如:
“LM327410v2 ELMv241 M2.11099”,或“OK>LM7v41A”“OK>OK>41055.1 327v”

其他时候,我得到了正确的响应“4105 5A>”

当我输入0100或任何其他PID代码时,得到相同的结果

请问有没有人知道是什么原因导致了这种情况,以及如何解决 修好它


首先,请记住,默认情况下,ELM327适配器响应终止为
\r>
。直接在控制台上打印会导致问题。尝试将
\r
替换为
\n
,然后您会看到更好的输出,例如:

>ATRV
11.9V

>0100
18 DA F1 10 06 41 00 B8 7B 30 10 00
18 DA F1 17 06 41 00 80 00 80 03 00
当然,实际输出随您发送的是PID(如
0100
)还是内部ELM327命令(如
ATRV
)而变化