Print - интерфейс для классов, которые имеют функциональность "печати" символов
Print #
Виртуальные #
write #
virtual size_t write(uint8_t) = 0
virtual size_t write(const uint8_t *buffer, size_t size)
Напечатать один байт или буфер указанной длины
Печать #
write #
size_t write(const char *buffer, size_t size)
Напечатать буфер указанной длины
print #
size_t print(const __FlashStringHelper *)
size_t print(const String &)
size_t print(const char[])
size_t print(char)
size_t print(unsigned char, int = DEC)
size_t print(int, int = DEC)
size_t print(unsigned int, int = DEC)
size_t print(long, int = DEC)
size_t print(unsigned long, int = DEC)
size_t print(double, int = 2)
size_t print(const Printable&)
Печать разных типов:
- У целочисленных можно указать основание
- У чисел с плавающей точкой можно указать количество знаков после запятой
println #
size_t println()
size_t println(const __FlashStringHelper *)
size_t println(const String &s)
size_t println(const char[])
size_t println(char)
size_t println(unsigned char, int = DEC)
size_t println(int, int = DEC)
size_t println(unsigned int, int = DEC)
size_t println(long, int = DEC)
size_t println(unsigned long, int = DEC)
size_t println(double, int = 2)
size_t println(const Printable&)
Печать разных типов с переносом строки или просто перенос строки:
- У целочисленных можно указать основание
- У чисел с плавающей точкой можно указать количество знаков после запятой
Printable #
Виртуальный класс Printable
позволяет добавлять своим классам интерфейс печати, то есть возможность печататься в системный Print
. Для этого нужно наследовать Printable
в свой класс и реализовать метод size_t printTo(Print& p) const
:
class Foo : public Printable {
public:
int i;
float f;
String str;
size_t printTo(Print& p) const {
// печатаем в p что и как хотим
p.print(i);
p.print(',');
p.print(f);
p.print(',');
p.print(str);
return 1;
}
};
void setup() {
Serial.begin(115200);
Foo foo;
foo.i = 123;
foo.f = 3.14;
foo.str = "hello";
Serial.println(foo); // вывод 123,3.14,hello
}
void loop() {
}
Метод printTo
должен возвращать количество напечатанных символов (может пригодиться в некоторых случаях), поэтому более правильно лучше записать вот так:
size_t printTo(Print& p) const {
size_t res = 0;
res += p.print(i);
res += p.print(',');
res += p.print(f);
res += p.print(',');
res += p.print(str);
return res;
}