截取Arduino串行监视器中显示的部分数据



我是这里的新成员,也是编程的参与者我尝试使用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((将其转换为整数。

一旦你有了整数值,你就可以把它们打印出来。

最新更新