Compare commits

...

2 Commits

Author SHA1 Message Date
9f462969c1 read until custom char 2025-09-20 14:20:03 +02:00
a3cb224206 return const buffer 2025-09-20 14:20:03 +02:00
2 changed files with 10 additions and 14 deletions

View File

@ -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":
{ {

View File

@ -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;