You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The implementation of basic_serialbuf treats having no characters available as an EOF condition. It expects that read() and peek() are blocking as they would be in an implementation on a OS. In Arduino they are non-blocking and return -1 when there's no characters available. The following patch fixes the behavior:
---
serstream | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/serstream b/serstream
index 268053b..24d12e4 100644
--- a/serstream+++ b/serstream@@ -130,10 +130,11 @@ namespace std
*/
virtual int_type underflow(){
- if(_serial.available())- return _serial.peek();- else - return traits::eof();+ // There is no EOF condition on a serial stream.+ // underflow() and uflow() should block, reproducing the + // OS behavior when there are no charaters to read.+ while (! _serial.available()) { /* wait */ }+ return _serial.peek();
}
/*
@@ -141,10 +142,9 @@ namespace std
*/
virtual int_type uflow(){
- if(_serial.available())- return _serial.read();- else - return traits::eof();+ // See underflow() above+ while (! _serial.available()) { /* wait */ }+ return _serial.read();
}
/*
The text was updated successfully, but these errors were encountered:
The implementation of basic_serialbuf treats having no characters available as an EOF condition. It expects that read() and peek() are blocking as they would be in an implementation on a OS. In Arduino they are non-blocking and return -1 when there's no characters available. The following patch fixes the behavior:
The text was updated successfully, but these errors were encountered: