您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

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