View Categories

Print

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;
}
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх