Какая функция отображает что-либо в консоли на экране монитора

Обновлено: 07.07.2024

Во многих случаях при использовании Arduino вы захотите увидеть данные, генерируемые Arduino. Одним из распространенных способов сделать это является использование функции Serial.print() из библиотеки Serial для отображения информации на мониторе вашего компьютера.

В выпуске этой недели мы поговорим о тонкостях функции Serial.print().

Это первая часть из двух статей о функции Serial.print(). Вот конкретные темы, которые мы рассмотрим в этом уроке:

  • Зачем использовать функцию Serial.print()?
  • Краткий обзор библиотеки Serial
  • Основное использование функции Serial.print()

Почему вы хотите использовать функцию Serial.print()?

Возможно, вы знаете, что функция — это инструмент программирования, который выполняет за вас определенную задачу. Задача функции Serial.print() — отправить информацию с Arduino на ваш компьютер, чтобы вы могли видеть значение, отображаемое на мониторе вашего компьютера.

Существует бесконечное количество причин, по которым вы можете захотеть отправить информацию с Arduino на дисплей компьютера, но мне особенно запомнились две причины:

Первой причиной является возможность видеть информацию, которую вы генерируете с помощью Arduino.

Например, если у вас есть датчик температуры, подключенный к Arduino, и вы хотите увидеть значение, которое записывает датчик температуры, вы можете использовать функцию Serial.print() для отправки данных на монитор компьютера. через USB-кабель. Если вы откроете окно монитора последовательного порта (Инструменты > Монитор последовательного порта), вы увидите значения, поступающие из Arduino.

Изображение окна последовательного монитора, использующего Serial.print() с Arduino для отправки битов по одному

Еще одна важная причина для отправки информации на дисплей компьютера с помощью функции Serial.print() — это разработка и отладка скетчей Arduino.

Очень часто, когда вы разрабатываете скетч для Arduino, то, что вы в конечном итоге кодируете, делает что-то не так, как вы ожидали. Возможно, у вас есть переменная, которая время от времени увеличивается и мигает светодиодом, когда достигает порогового значения. Когда вы загружаете код в Arduino, вы замечаете, что светодиод мигает чаще, чем должен.

Вы можете смотреть на код до тех пор, пока ваши глаза не покроются кровью, но на самом деле визуализация увеличения переменной [через функцию Serial.print()], чтобы видеть ее значения каждый раз через цикл(), может очень помочь объяснить, что происходит. быстро.

Краткий обзор библиотеки сериалов

Мы не можем говорить о функции Serial.print(), не упомянув вкратце о библиотеке Serial.

Функция print() является частью библиотеки Serial. Мы говорим не о хлопьях, таких как Cheerios или Captain Crunch, а о последовательном, как в «одно за другим».

Serial.print() с Arduino отправляет биты по одному

Последовательная библиотека позволяет нам подключать Arduino к другому оборудованию, например к компьютеру.

Чтобы мы могли использовать функции библиотеки Serial, мы должны инициировать последовательную связь — для этого мы используем функцию Serial.begin(). Serial.begin() должен войти в setup().

Теперь по причинам, выходящим за рамки этого обсуждения, удобно использовать число 9600 в функции Serial.begin(). Значение 9600 определяет скорость передачи данных. Скорость передачи — это скорость, с которой информация будет передаваться от Arduino к компьютеру или в другом направлении.

Основное использование функции Serial.print()

Давайте поговорим о том, как использовать функцию Serial.print().

Скажем, у нас есть эскиз. В этом скетче есть переменная с именем coolFactor.

Я хочу иметь возможность отслеживать значение переменной coolFactor, то есть я хочу, чтобы оно отображалось на экране моего компьютера. Идеальное использование функции Serial.print()!

Первое, что мы должны сделать в скетче Arduino, — начать последовательную связь. Как мы только что сказали, мы используем функцию Serial.begin() и помещаем ее в setup() скетча.

Теперь в цикле(), если я хочу отобразить значение coolFactor с помощью функции print(), я просто набираю Serial.print() и в скобках ввожу имя переменной.< /p>

Если мы загрузим этот скетч в Arduino, значение coolFactor будет каждый раз отправляться на последовательный порт через loop().В Arduino IDE, если вы откроете окно монитора последовательного порта [Инструменты > Монитор последовательного порта], вы увидите поток значений.

Если вам понравился этот урок, я приглашаю вас присоединиться к 1000 студентов, которым понравился наш бесплатный ускоренный курс по Arduino — это серия обучающих видеороликов из 19 частей по использованию Arduino (вы можете зарегистрироваться ниже).

C Printf() Функция

Привет всем. В этой статье мы подробно рассмотрим функцию C printf().

Будь то любой язык программирования, нам всегда требуется взаимодействие пользователя с системой через консоль или интерфейс. В программировании на C того же можно добиться с помощью функции printf().

Итак, начнем!!

Работа функции C printf()

Функция printf() позволяет программисту отображать выходные данные или некоторую информацию непосредственно на консоли или в интерфейсе. То есть он отображает отформатированный вывод на консоли.

С помощью функции printf() мы можем представить на экране значения различных типов данных вместе с некоторой пояснительной информацией. Функция printf() отображает различные значения, такие как целые числа, числа с плавающей запятой, строки, восьмеричные значения и т. д.

Поняв, как работает функция printf(), давайте теперь сосредоточимся на ее структуре.

Синтаксис функции printf()

Функция printf() принимает спецификатор формата, предоставляющий информацию о типе данных значения.

Синтаксис:

  • описатель формата: представляет тип данных значения, которое будет напечатано на экране.
  • переменная: отображает значение внутри этой переменной.

При успешной компиляции функция printf() возвращает количество символов/значений, отображаемых на экране.

Примеры функции printf()

В приведенном ниже примере мы отобразили целое число и значение с плавающей запятой на консоли, используя спецификаторы определенного формата в качестве параметров—

Вывод:

Теперь давайте отобразим отформатированную строку в консоли, как показано ниже–

Вывод:

В этом примере мы попытались отобразить количество символов, отображаемых в консоли, с помощью функции printf().

Здесь мы передаем значение с плавающей запятой функции printf(), которая отображается на экране.

Вывод:

Заключение

На этом мы подошли к концу этой темы. Не стесняйтесь оставлять комментарии ниже, если у вас возникнут какие-либо вопросы.

Современные игровые консоли имеют стандартные порты HDMI на задней панели. Современные компьютерные мониторы также имеют такие же порты. Так что мешает вам подключить консоль к монитору компьютера, а не к телевизору?

Ответ — «ничего», но выбор компьютерного монитора сопряжен с некоторыми жертвами, о которых вы должны знать. Мы рассмотрим плюсы и минусы каждого варианта, чтобы помочь вам выбрать игровой консольный монитор, который подходит именно вам.


В чем разница между монитором и телевизором?

Фундаментально нет никакой разницы между ЖК-монитором компьютера и телевизором. OLED-телевизоры — это отдельная тема, но компьютерные OLED-мониторы существуют, хотя и встречаются редко. Если вы подключите консоль к любому из них, вы получите изображение. Работа сделана, верно? Не совсем.

Телевизоры созданы для других целей, чем мониторы. Они не фокусируются на тех же аспектах качества изображения, что и компьютерный монитор. Самое важное отличие заключается в том, что современные телевизоры, как правило, довольно часто выполняют постобработку изображения.

Это означает, что оборудование внутри телевизора анализирует входящий сигнал изображения и пытается его улучшить. Часто, чтобы компенсировать низкую производительность родной панели. Однако любая обработка требует времени. Это создает временную задержку (задержку) между моментом поступления сигнала на вход телевизора и его отображением на экране.


Это совершенно не имеет значения, когда речь идет о просмотре фильмов на Netflix или BluRay. Так как вы пассивно его потребляете. Видеоигры разные, вы отправляете команды через контроллер, а игровой мир отвечает на экране. Любая задержка между этими двумя событиями может серьезно повлиять на игровой процесс. Заставляет игру чувствовать себя вялой и невосприимчивой.

Чтобы справиться с этим, в большинстве современных телевизоров есть какой-либо компьютерный или игровой режим, который отключает постобработку, чтобы уменьшить задержку. Конечно, без этой обработки изображение выглядит не так красиво!

В конце концов, моделей телевизоров и мониторов так много, а их функции и технологии так сильно совпадают, что сложно провести универсальное сравнение. Однако следует знать, что мониторы — это не просто маленькие телевизоры. Они действительно разные.

Преимущества использования телевизора с консолью

Использование телевизора в качестве игрового монитора консоли дает целый ряд преимуществ. Прежде всего, этого хочет от вас производитель консоли. В последних консолях также учитываются мониторы, но в основном они предназначены для использования с телевизором. Так зачем вам использовать телевизор с вашей консолью? Вот наш основной список причин:


  • У телевизоров большие экраны.
  • Все телевизоры имеют встроенный звук.
  • Предлагайте простое решение, работающее по принципу plug-and-play.
  • Играть с дивана в гостиной удобнее.
  • Телевизоры высокого класса, такие как OLED, не имеют себе равных в играх.
  • Возможно, у вас уже есть телевизор, поэтому он не требует дополнительных затрат.

Большое красиво! Если вам посчастливилось иметь один из новейших OLED- или высококачественных ЖК-телевизоров с разрешением 4K, это может сделать ваш игровой опыт чем-то другим. Даже если вы пожизненный геймер на ПК, вы можете подключить свой компьютер к этому большому старому телевизору и получить удовольствие от погружения. Иногда количество само по себе имеет качество.

Недостатки использования телевизора с консолью

Традиционный путь и использование телевизора в качестве игрового монитора консоли имеет некоторые недостатки. Хотя большинству людей, скорее всего, подойдет установка телевизора рядом с консолью, вот несколько причин, по которым вы можете подумать о выборе альтернативы:


  • Телевизоры занимают много места.
  • Телевизоры большого формата стоят дорого.
  • Телевизоры с высокотехнологичными функциями, такими как переменная частота обновления и высокая частота кадров, стоят еще дороже.
  • Игры в общем семейном пространстве не всегда идеальны.
  • Обычно телевизоры используются совместно с другими членами семьи.
  • Телевизоры могут страдать от серьезной задержки ввода, если вы покупаете не ту модель или плохо выглядите при работе в игровом режиме.
  • Вы платите за кучу оборудования и ресурсов, которые вам не нужны, если вы хотите только играть в игры.

Самый большой недостаток телевизоров заключается в том, что они предназначены для использования в качестве дисплеев общего назначения. Мастер на все руки, но мастер ни в чем. Если только вы не готовы заплатить большую сумму денег, чтобы получить что-то исключительное во всем.

Преимущества использования монитора с консолью

Если вам интересно, что хорошего в использовании монитора ПК в качестве игрового монитора консоли, у нас есть несколько ключевых моментов, которые вам следует учесть:


  • Это позволяет создать личное и компактное игровое пространство в вашей спальне, общежитии или кабинете.
  • Если у вашего монитора есть несколько входов, вы можете совместно использовать экран между консолью и ПК.
  • Если вас интересуют игры с высокой частотой обновления и разрешением ниже 4K, монитор — самый дешевый способ добиться этого.
  • Расположение рядом с монитором уменьшает разницу в размерах по сравнению с телевизором.
  • Современные консоли поддерживают мышь и клавиатуру в некоторых играх, в этом случае лучше использовать стол.
  • Вы можете использовать контроллер, подключенный к консоли. Больше не нужно беспокоиться о батарее!
  • Предлагает игры без задержек с меньшим временем отклика.

Геймеры на ПК вполне довольны тем, что сидят за столом, и если вы не против играть на консоли в таком пространстве, монитор — хороший вариант.

Недостатки использования монитора с консолью


  • В настоящее время игровые консоли несовместимы ни с одним монитором, у которого соотношение сторон не равно 16:9. Вероятно, это сработает, но у вас будут заметные черные полосы сверху или по бокам изображения.
  • Некоторые консоли, например PlayStation 5, в настоящее время не поддерживают разрешение 1440p, в отличие от Xbox. Это может измениться в будущем обновлении прошивки PlayStation.
  • Если вам нужна поддержка 4K и 120 Гц, вам придется найти компьютерный монитор с HDMI 2.1. Та же проблема с телевизорами.
  • Большинство мониторов не имеют встроенных динамиков. Поэтому вам придется подключить динамики к их аудиовыходу, если он у них есть. Конечно, многие консоли поддерживают звук Bluetooth или позволяют подключать наушники к контроллерам.

Если вы согласитесь с этими ограничениями, вам, вероятно, понравится использовать монитор с консолью.

Какой выбор вам подходит?

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

Сидни Батлер — социолог и фанатик технологий, пытающийся понять, как сосуществуют люди и технологии. Он имеет двадцатилетний опыт работы внештатным специалистом по компьютерам и более десяти лет в качестве исследователя технологий и преподавателя. Сидни уже более пяти лет является профессиональным писателем по технологиям и освещает такие темы, как виртуальная реальность, игры, кибербезопасность и трансгуманизм. Прочитать полную биографию Сидни

Понравился ли вам этот совет? Если это так, загляните на наш собственный канал на YouTube, где мы рассказываем о Windows, Mac, программном обеспечении и приложениях, а также предлагаем множество советов по устранению неполадок и видео с практическими рекомендациями. Нажмите кнопку ниже, чтобы подписаться!

Как отобразить содержимое объекта JavaScript в строковом формате, например, когда мы предупреждаем переменную?

Тот же формат, в котором я хочу отображать объект.


Не могли бы вы переформулировать свой вопрос? Что вы подразумеваете под «форматным способом»? Например, с расширенным форматированием, таким как полужирный/курсив/и т. д.?

есть ли способ отобразить значение переменной во время выполнения, распечатав значение переменной с помощью некоторых консольных команд?

@BlackPanther Просто выполните console.log("", yourObject1, yourObject2, yourObject3 и т. д.); . Более короткая версия — просто выполнить console.log(yourObject1, yourObject2 и т. д.); .

40 ответов 40

Используйте собственный метод JSON.stringify. Работает с вложенными объектами, и все основные браузеры поддерживают этот метод.

Ссылка на справочник API Mozilla и другие примеры.

Используйте пользовательский заменитель JSON.stringify, если вы столкнулись с этой ошибкой Javascript


Для более удобного вывода попробуйте JSON.stringify(obj, null, 4). Это запишет его как текст с аккуратным отступом

JSON.stringify может отображать только небольшое подмножество значений javascript и выдает исключение для остальных — в console.log такой проблемы нет.

У меня были случаи, когда это не работало: отображалось <> для непустого объекта. Поэтому обязательно проверьте с помощью console.log(obj), прежде чем думать, что ваш объект пуст, когда strigify() возвращает <> .

Если вы хотите распечатать объект в целях отладки, используйте код:

скриншот консоли Chrome

Примечание: вы должны только регистрировать объект. Например, это не сработает:

Примечание: вы также можете использовать запятую в методе журнала, тогда первая строка вывода будет строкой, а после этого объект будет отображаться:


Эта функция также работает в Google Chrome при использовании консоли JavaScript (Shift+Control+J или Shift+Control+I, в зависимости от версии Chrome). Также обратите внимание, что console.log(obj1, obj2) тоже работает очень хорошо, поэтому вам не нужно вызывать console.log() для каждого объекта при регистрации нескольких переменных. Кроме того, всегда не забывайте удалять все такие вызовы в рабочей среде, так как это нарушит работу браузеров, в которых они не реализованы (например, Internet Explorer).

Да, он печатает [object Object], но рядом с ним есть небольшая раскрывающаяся кнопка, позволяющая просматривать содержимое объекта.

@hughes на самом деле можно и то, и другое. у меня есть объект, который я создал с помощью: var obj = < "foo" : false >; и другой объект, который передается в обратный вызов с сервера, тот, который прошел через обратный вызов, печатается с маленькой стрелкой, чтобы вы могли его открыть, статически созданный просто печатает [object Object] без стрелки. Я тоже пытаюсь в этом разобраться, есть еще мысли?

console.log("id:"+obj); не будет выводить правильно, так как выводит строку, как вы ее там видите, вам нужно указать ее так: console.log("id:"); console.log(объект);

Это именно то, что я хочу. Я использую карты Google v3, и рендерер направления возвращает объект. В нем четыре элемента, и в одном из них имя объекта постоянно меняется, поэтому нам нужно его найти. Для этого этот метод действительно помог. Кроме того, таким образом мы можем получить все имена свойств и объектов. Или есть другой способ найти имена объектов и свойств?

Отображает интерактивный список свойств указанного объекта JavaScript. Этот листинг позволяет использовать треугольники раскрытия для проверки содержимого дочерних объектов.

Обратите внимание, что функция console.dir() не является стандартной. См. веб-документы MDN

Да, это хорошее решение, однако оно работает должным образом только в том случае, если вы хотите регистрировать только объект (например, console.dir(obj)). Если вы хотите объединить строку с выводом, она даст вам [object Object].

Огромное преимущество консоли.dir заключается в том, что вы все еще можете развернуть и прочитать значения в своей консоли после того, как переменная была удалена сборщиком мусора. Это описано в другой статье SO здесь

И еще одно преимущество console.dir заключается в том, что при сохранении консоли в файл все свойства сохраняются в файле, как и ожидалось. Этого не происходит при использовании только console.log.

попробуйте это:

Это напечатает строковую версию объекта. Таким образом, вместо [объекта] в качестве вывода вы получите содержимое объекта.

Решение состоит в том, чтобы просто разделить на 2 отдельные команды, хотите верьте, хотите нет: console.log("id:"); console.log(объект);

Ну, в Firefox (спасибо @Bojangles за подробную информацию) есть метод Object.toSource(), который печатает объекты как JSON и function()<> .

Думаю, этого достаточно для большинства целей отладки.

Похоже, Object.toSource() не работает в Chrome. Ожидается ли это? Или Хром не подпадает под "продвинутые браузеры"? =)

Старая тема, только что нашел через Google. .toSource() на самом деле только для Firefox. Просто решил дать вам знать.

Если вы хотите использовать оповещение для печати вашего объекта, вы можете сделать следующее:

alert("myObject is " + myObject.toSource());

Он должен печатать каждое свойство и соответствующее ему значение в строковом формате.

Если вы хотите видеть данные в табличном формате, вы можете использовать

Таблица может быть отсортирована, если щелкнуть столбец таблицы.

Вы также можете выбрать, какие столбцы отображать:

Дополнительную информацию о console.table можно найти здесь


Функция:

Использование:

Пример:


В NodeJS вы можете распечатать объект с помощью util.inspect(obj) . Обязательно укажите глубину, иначе у вас будет только неглубокий отпечаток объекта.


Кроме того, обратите внимание, что в javascript функции рассматриваются как объекты.

В качестве дополнительного примечания:

На самом деле вы можете назначить новое свойство, подобное этому, и получить к нему доступ в console.log или отобразить его в предупреждении

В самом вопросе говорится: "Например, когда мы "предупреждаем" переменную", так что на самом деле это не ответ. А также ваш другой вариант «JSON.stringify(obj)» уже упоминался в «27 ноября 2010 г.», вы только загромождаете этот вопрос дубликатами и отсутствием ответов. Ваше замечание о назначении новых свойств также бессмысленно в этом контексте.

Примечание. В этих примерах yourObj определяет объект, который вы хотите изучить.

Это де-факто способ отображения содержимого объекта

введите здесь описание изображения

выдаст что-то вроде:

введите здесь описание изображения

Он выведет что-то вроде: (на фото выше: ключи/значения, хранящиеся в объекте)

введите здесь описание изображения

Это даст аккуратный вывод. Решение, упомянутое в предыдущем ответе: console.log(yourObj) отображает слишком много параметров и не является самым удобным для пользователя способом отображения нужных данных. Вот почему я рекомендую регистрировать сначала ключи, а затем значения отдельно.

введите здесь описание изображения

Кто-то в более раннем комментарии предложил этот вариант, однако он никогда не работал у меня. Если это работает для кого-то еще в другом браузере или в чем-то еще, тогда слава! Я все равно помещу код здесь для справки! Выведет что-то вроде этого на консоль:

не уверен, что понял комментарий, но я добавил разные имена для объектов, которые должны иметь имя. объект не был достаточно явным.

console.table(yourObj) работал у меня в Google Chrome версии 77.0.3865.90 (официальная сборка) (64-разрядная версия). Спасибо, что поделились!

Чтобы распечатать объект целиком с помощью Node.js с цветами в качестве бонуса:

Конечно, цвета необязательны, 'depth: null' будет печатать весь объект.

Похоже, эти параметры не поддерживаются браузерами.


Как уже было сказано, лучший и самый простой способ, который я нашел, это

(Это добавлено в мою библиотеку на GitHub)

Изобретаем велосипед! Ни одно из этих решений не сработало в моей ситуации. Итак, я быстро подделал ответ Уилсонпейджа. Это не для печати на экране (через консоль, текстовое поле или что-то еще). В таких ситуациях он отлично работает и отлично работает, как запросил OP, для alert . Многие ответы здесь не касаются использования предупреждения, как запросил ОП. Во всяком случае, он, однако, отформатирован для передачи данных.Эта версия возвращает результат, очень похожий на toSource() . Я не тестировал JSON.stringify , но предполагаю, что это одно и то же. Эта версия больше похожа на полифил, так что вы можете использовать ее в любой среде. Результатом этой функции является допустимое объявление объекта Javascript.

Я не сомневаюсь, что что-то подобное уже было где-то на SO, но просто сделать это было короче, чем тратить время на поиск прошлых ответов. И поскольку этот вопрос был моим главным хитом в Google, когда я начал искать об этом; Я подумал, что размещение его здесь может помочь другим.

В любом случае результатом этой функции будет строковое представление вашего объекта, даже если ваш объект имеет встроенные объекты и массивы, и даже если эти объекты или массивы имеют дополнительные встроенные объекты и массивы. (Я слышал, ты любишь выпить? Итак, я прокачал твою машину кулером. А потом я прокачал твой кулер кулером. Так что твой кулер может пить, пока ты крут.)

Массивы сохраняются с [] вместо <> и поэтому не имеют пар ключ/значение, только значения. Как обычные массивы. Поэтому они создаются так же, как и массивы.

Кроме того, все строки (включая имена ключей) заключаются в кавычки, в этом нет необходимости, если только эти строки не содержат специальные символы (например, пробел или косую черту). Но мне не хотелось обнаруживать это только для того, чтобы удалить некоторые кавычки, которые в противном случае все еще работали бы нормально.

Эту результирующую строку затем можно использовать с eval или просто сбросить ее в var путем манипуляции со строкой. Таким образом, заново создав свой объект из текста.

Дайте мне знать, если я все испортил, в моем тестировании работает нормально. Кроме того, единственный способ, которым я мог придумать, чтобы обнаружить массив типов, — это проверить наличие length . Поскольку Javascript действительно хранит массивы как объекты, я не могу проверить тип массива (такого типа нет!). Если кто-то еще знает лучший способ, я хотел бы услышать его. Потому что, если ваш объект также имеет свойство с именем length, эта функция ошибочно примет его за массив.

EDIT: добавлена ​​проверка объектов с нулевым значением. Спасибо, Брок Адамс

EDIT: Ниже приведена фиксированная функция, позволяющая печатать бесконечно рекурсивные объекты. Это не печатает так же, как toSource из FF, потому что toSource будет печатать бесконечную рекурсию один раз, тогда как эта функция немедленно убьет ее. Эта функция работает медленнее, чем описанная выше, поэтому я добавляю ее сюда вместо того, чтобы редактировать приведенную выше функцию, поскольку она нужна только в том случае, если вы планируете куда-то передавать объекты, которые ссылаются сами на себя.

Читайте также: