From dc68f92f175fa8e0bf761baed4b49dc1e2aa150b Mon Sep 17 00:00:00 2001 From: Stanley Huang Date: Sun, 7 Sep 2014 00:18:22 +1000 Subject: Update getVoltage() --- libraries/OBD/OBD.cpp | 16 ++++++++-------- libraries/OBD/OBD.h | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'libraries') diff --git a/libraries/OBD/OBD.cpp b/libraries/OBD/OBD.cpp index a568d7a..0e09640 100644 --- a/libraries/OBD/OBD.cpp +++ b/libraries/OBD/OBD.cpp @@ -245,7 +245,7 @@ void COBD::wakeup() receive(); } -unsigned int COBD::getVoltage() +int COBD::getVoltage() { char buf[OBD_RECV_BUF_SIZE]; write("ATRV\r"); @@ -256,16 +256,16 @@ unsigned int COBD::getVoltage() int v1 = atoi(buf); int v2 = 0; char *p = strchr(buf, '.'); - if (p) v2 = atoi(p + 1); - if (v2 < 10) - v2 *= 100; - else if (v2 <100) - v2 *= 10; - return (unsigned int)v1 * 1000 + v2; + if (p++) { + if (*p >= '0' && *p <= '9') { + v2 = *p - '0'; + } + } + return v1 * 10 + v2; } } } - return 0; + return -1; } bool COBD::isValidPID(byte pid) diff --git a/libraries/OBD/OBD.h b/libraries/OBD/OBD.h index 11fa70d..0a15e97 100644 --- a/libraries/OBD/OBD.h +++ b/libraries/OBD/OBD.h @@ -121,8 +121,8 @@ public: virtual bool setProtocol(OBD_PROTOCOLS h = PROTO_AUTO); // clear diagnostic trouble code virtual void clearDTC(); - // get battery voltage (in mV, 12500 for 12.5V, works without ECU) - virtual unsigned int getVoltage(); + // get battery voltage (in 0.1V, e.g. 125 for 12.5V, works without ECU) + virtual int getVoltage(); // send query for specified PID virtual void sendQuery(byte pid); // retrive and parse the response of specifie PID -- cgit v1.2.3