Teensy 4.1 core updated for C++20
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

Stream.h 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. Stream.h - base class for character-based streams.
  3. Copyright (c) 2010 David A. Mellis. All right reserved.
  4. This library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Lesser General Public
  6. License as published by the Free Software Foundation; either
  7. version 2.1 of the License, or (at your option) any later version.
  8. This library is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public
  13. License along with this library; if not, write to the Free Software
  14. Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  15. */
  16. #ifndef Stream_h
  17. #define Stream_h
  18. #include <inttypes.h>
  19. #include "Print.h"
  20. class Stream : public Print
  21. {
  22. public:
  23. Stream() : _timeout(1000), read_error(0) {}
  24. virtual int available() = 0;
  25. virtual int read() = 0;
  26. virtual int peek() = 0;
  27. virtual void flush() = 0;
  28. void setTimeout(unsigned long timeout);
  29. bool find(char *target);
  30. bool find(uint8_t *target) { return find ((char *)target); }
  31. bool find(char *target, size_t length);
  32. bool find(uint8_t *target, size_t length) { return find ((char *)target, length); }
  33. bool findUntil(char *target, char *terminator);
  34. bool findUntil(uint8_t *target, char *terminator) { return findUntil((char *)target, terminator); }
  35. bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen);
  36. bool findUntil(uint8_t *target, size_t targetLen, char *terminate, size_t termLen) {return findUntil((char *)target, targetLen, terminate, termLen); }
  37. long parseInt();
  38. long parseInt(char skipChar);
  39. float parseFloat();
  40. float parseFloat(char skipChar);
  41. size_t readBytes(char *buffer, size_t length);
  42. size_t readBytes( uint8_t *buffer, size_t length) { return readBytes((char *)buffer, length); }
  43. size_t readBytesUntil(char terminator, char *buffer, size_t length);
  44. size_t readBytesUntil(char terminator, uint8_t *buffer, size_t length) { return readBytesUntil(terminator, (char *)buffer, length); }
  45. String readString(size_t max = 120);
  46. String readStringUntil(char terminator, size_t max = 120);
  47. int getReadError() { return read_error; }
  48. void clearReadError() { setReadError(0); }
  49. protected:
  50. void setReadError(int err = 1) { read_error = err; }
  51. unsigned long _timeout;
  52. private:
  53. char read_error;
  54. int timedRead();
  55. int timedPeek();
  56. int peekNextDigit();
  57. };
  58. #endif