Главная chevron_right Функции chevron_right Связь chevron_right Stream

Stream

Базовый класс Stream лежит в основе работы с потоками данных в Arduino: от него наследуются Serial, Wire, Ethernet, SD и другие — и все они используют единый набор методов чтения, поиска и разбора данных.

Полная статья

Описание

Stream — это базовый класс Arduino, на котором строится вся работа с потоками данных: последовательным портом, сетевыми соединениями, SD-картой и другими интерфейсами. Напрямую вы его обычно не создаёте: он задаёт общее поведение для библиотек и классов, которые от него наследуются.

Класс Stream отвечает за чтение и разбор входящих данных в Arduino. Когда вы вызываете read() или похожие методы через любой из поддерживаемых классов, именно Stream обеспечивает их поведение. Функции вывода данных, такие как print(), Stream получает по наследству от класса Print.

Практически это означает: если вы умеете работать с одним потоком — например, с read() — те же методы чтения и разбора будут доступны в любом другом классе, построенном на Stream. Это делает код переносимым и предсказуемым.

Примеры библиотек и классов, которые используют Stream:

Функции

Чтение

Поиск

Разбор

Конфигурация

Управление буфером

Практические замечания

  • Stream не предназначен для прямого использования — работайте с конкретными классами-наследниками: print(), клиентами Ethernet, файлами SD и так далее.
  • Методы чтения из Stream обычно блокирующие: они ждут появления данных в буфере. Чтобы не зависать в ожидании, перед чтением проверяйте доступность данных с помощью available().
  • Функции поиска и разбора (например, поиск подстроки или извлечение числа) внутри работают с тем же буфером, что и read(). После их вызова позиция в потоке сдвигается — повторно прочитать «уже пройденные» байты не получится.
  • Таймаут ожидания данных можно настроить через соответствующий метод конфигурации — это важно, если источник данных может молчать дольше обычного.
  • Если данные приходят быстрее, чем скетч их обрабатывает, буфер может переполниться и часть байт будет потеряна. Следите за размером буфера и скоростью обработки.

Полезные материалы