Snprintf в ардуино: ARDUINO — Попеременный вывод значений куда либо.

Удобная для встраиваемых систем реализация printf — Embedded Artistry использование

printf() из-за опасений по поводу раздувания двоичного размера. Вместо этого команды создадут свою собственную нестандартную альтернативу printf . Классический пример — Arduino SDK 9.0011 Print , который требует от пользователей разделения операторов печати на несколько вызовов функций для поддержки различных форматов отображения переменных.

Вместо того, чтобы полагаться на самодельное решение, мы рекомендуем использовать библиотеку mpaland/printf (примечание : теперь мы рекомендуем форк, поддерживаемый eyalroz, который включает ряд исправлений и улучшений исходной библиотеки). Эта библиотека была разработана специально для использования во встроенных системах. Он обеспечивает поддержку printf семейство функций, включая sprintf , snprintf и vsnprintf . Предоставляются все важные флаги форматирования, включая форматы с плавающей запятой и экспоненциальные форматы, а также спецификаторы ширины и точности.

Библиотека поддерживает повторный вход и безопасна для потоков. Нет динамического выделения памяти, а также статических переменных или буферов, выделяемых библиотекой. Код не содержит предупреждений, предупреждений LINT и протестирован более чем в 400 случаях. Автор также утверждает, что он подходит для использования в автомобильной промышленности.

Заставить эту библиотеку работать в вашей системе очень просто. Внешних зависимостей нет. Все, что нужно, — это реализация функции _putchar :

 void _putchar(char character)
{
    // Добавляем код для печати одного символа на какое-то устройство
} 

Поскольку библиотека предназначена для использования во встроенных системах, доступны параметры для уменьшения объема памяти. Размеры внутренних буферов с плавающей запятой можно настроить в соответствии с конкретными потребностями вашей системы. Плавающая запятая, экспонента и

long long форматы печати также могут быть отключены во время компиляции.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *