我是这里的新成员,也是编程的参与者我尝试使用OBD-II电缆适配器从我的车辆中提取信息。我尝试简单的代码来读取RPM,并成功地获得它并将其打印在串行监视器中,但我面临一个简单的问题。串行监视器显示PID代码+RPM的当前值,如下所示:
010C849,其中010C:指使用的RPM-PID,849:RPM 的当前值
所以我可以从结果中截取HEX数字,并只显示RPM的值,例如(849(
我使用了以下代码:
以下是结果的示例`
#include <OBD2UART.h>
COBD obd;
void setup()
{
pinMode(13, OUTPUT);
obd.begin();
while (!obd.init());
}
void loop()
{
int value;
if (obd.readPID(PID_RPM, value)) {
Serial.println(value);
delay(1000);
}
}
`
您可以使用Regex来裁剪模式,但Arduino(通常还有C++(不支持正则表达式解析。
一旦有了字符串,就可以使用indexOf()
和substring()
来提取子字符串。一旦有了子字符串,就可以使用toCharArray()
提取字符数组,并使用atoi((将其转换为整数。
一旦你有了整数值,你就可以把它们打印出来。