diff options
author | Chris--A <chris@genx.biz> | 2015-06-19 13:05:06 +1000 |
---|---|---|
committer | Sandeep Mistry <s.mistry@arduino.cc> | 2015-11-23 15:46:23 -0500 |
commit | 29e1dbb8be6beb75604094df5c5e736f7af67f79 (patch) | |
tree | ed4c4caad099b3123ebb29311f4ba9960496f82a /cores/arduino/Stream.cpp | |
parent | b15e001b0d1b78caf3475c004d993fda58fcebef (diff) |
This commit improves the parsing capability by allowing decimals only
prefixed by an '.' character. Previously the preceeding zero must be
present: '0.'
Diffstat (limited to 'cores/arduino/Stream.cpp')
-rw-r--r-- | cores/arduino/Stream.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/cores/arduino/Stream.cpp b/cores/arduino/Stream.cpp index b31942f..1f2f074 100644 --- a/cores/arduino/Stream.cpp +++ b/cores/arduino/Stream.cpp @@ -54,14 +54,17 @@ int Stream::timedPeek() // returns peek of the next digit in the stream or -1 if timeout // discards non-numeric characters -int Stream::peekNextDigit() +int Stream::peekNextDigit( bool detectDecimal ) { int c; while (1) { c = timedPeek(); - if (c < 0) return c; // timeout - if (c == '-') return c; - if (c >= '0' && c <= '9') return c; + + if( c < 0 || + c == '-' || + c >= '0' && c <= '9' || + detectDecimal && c == '.') return c; + read(); // discard non-numeric } } @@ -124,7 +127,7 @@ long Stream::parseInt(char skipChar) long value = 0; int c; - c = peekNextDigit(); + c = peekNextDigit(false); // ignore non numeric leading characters if(c < 0) return 0; // zero returned if timeout @@ -162,7 +165,7 @@ float Stream::parseFloat(char skipChar){ char c; float fraction = 1.0; - c = peekNextDigit(); + c = peekNextDigit(true); // ignore non numeric leading characters if(c < 0) return 0; // zero returned if timeout |