Compare commits
2 Commits
master
...
read-until
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f462969c1 | |||
| a3cb224206 |
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "SerialReader",
|
"name": "SerialReader",
|
||||||
"version": "1.0.1",
|
"version": "1.1.0",
|
||||||
"description": "Helper class for reading Serial input, without blocking",
|
"description": "Helper class for reading Serial input, without blocking",
|
||||||
"repository":
|
"repository":
|
||||||
{
|
{
|
||||||
|
|||||||
@ -7,28 +7,24 @@ class SerialReader {
|
|||||||
char buffer[bufferLength];
|
char buffer[bufferLength];
|
||||||
|
|
||||||
public:
|
public:
|
||||||
char* getBuffer() {
|
const char* getBuffer() {
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readLine(HardwareSerial &serial) {
|
int readLine(HardwareSerial& serial, const char eol = '\n') {
|
||||||
static size_t pos = 0;
|
static size_t pos = 0;
|
||||||
size_t rpos;
|
size_t rpos;
|
||||||
int readCh;
|
int readCh;
|
||||||
|
|
||||||
for (int i = 0, avail = serial.available(); i < avail && (readCh = serial.read()) > 0; i++) {
|
for (int i = 0, avail = serial.available(); i < avail && (readCh = serial.read()) > 0; i++) {
|
||||||
switch (readCh) {
|
if (readCh == eol) {
|
||||||
case '\r': // Ignore CR
|
|
||||||
break;
|
|
||||||
case '\n': // Return on new-line
|
|
||||||
rpos = pos;
|
rpos = pos;
|
||||||
pos = 0; // Reset position index ready for next time
|
pos = 0; // Reset position index ready for next time
|
||||||
return rpos;
|
return rpos;
|
||||||
default:
|
}
|
||||||
if (pos < bufferLength - 1) {
|
if ((readCh != '\r') && (readCh != '\n') && (pos < bufferLength - 1)) {
|
||||||
buffer[pos++] = readCh;
|
buffer[pos++] = readCh;
|
||||||
buffer[pos] = 0;
|
buffer[pos] = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user