read until custom char

This commit is contained in:
Nicu Hodos 2023-01-21 17:04:20 +01:00
parent a3cb224206
commit 9f462969c1
2 changed files with 7 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{
"name": "SerialReader",
"version": "1.0.1",
"version": "1.1.0",
"description": "Helper class for reading Serial input, without blocking",
"repository":
{

View File

@ -11,24 +11,20 @@ public:
return buffer;
}
int readLine(HardwareSerial &serial) {
int readLine(HardwareSerial& serial, const char eol = '\n') {
static size_t pos = 0;
size_t rpos;
int readCh;
for (int i = 0, avail = serial.available(); i < avail && (readCh = serial.read()) > 0; i++) {
switch (readCh) {
case '\r': // Ignore CR
break;
case '\n': // Return on new-line
if (readCh == eol) {
rpos = pos;
pos = 0; // Reset position index ready for next time
return rpos;
default:
if (pos < bufferLength - 1) {
buffer[pos++] = readCh;
buffer[pos] = 0;
}
}
if ((readCh != '\r') && (readCh != '\n') && (pos < bufferLength - 1)) {
buffer[pos++] = readCh;
buffer[pos] = 0;
}
}
return 0;