Какой это был скетч?

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

, 👍0

Обсуждение

Какую именно информацию вы хотите там видеть? Вы можете просто выполнить последовательную печать с каким-либо специальным сообщением (определенным вами) внутри setup(). Это то что ты хочешь?, @chrisl

Я настроил триггер предварительной компиляции, который запускает сценарий оболочки, который получает текущий хэш git и помещает его в файл как #define. Я распечатываю это по своему эскизу. Тогда я знаю, какой файл и какая версия загружена., @Delta_G


2 ответа


2

В начале функции setup() я вывожу на терминал одну строку с именем, версией и датой файла .ino. Я держу все проекты под контролем исходного кода, который поддерживает эту строку без каких-либо усилий с моей стороны, пока я включил небольшой фрагмент данных и вызов Serial.println() для его печати.

Обновление:

Можете ли вы показать код, как включить автоматическую идентификацию версии в цепочку сборки Arduino?

Вот пример. Обратите внимание, что цепочка сборки не изменяется; все происходит в исходном коде, в моем случае RCS. Вам, вероятно, придется настроить ключевое слово, которое получает данные ревизии ($Id$ в RCS) для любого используемого вами управления версиями. Если вы не используете систему контроля версий, вы можете распечатать макросы времени компиляции, предложенные @DataFiddler.

/*
* Макрос для сообщения ::println() & семейство для получения указателя на флэш-память
* #определите это в файле local.h вашей библиотеки или где бы вы ни находились
* размещайте свои личные, уникальные для сайта или закрытые макросы, например
* Пароль Wi-Fi:
*
* #define FLSTR_HLP(str) (const __FlashStringHelper *)str
* (Для получения дополнительной информации найдите __FlashStringHelper)
*
*/
// ----------------------------------
// Ваш файл .ino будет начинаться здесь:

#include <local.h>                        // получает указанный выше #define

// Определите один из них в каждом файле .ino:
// const char IdString[] PROGMEM = $Id$
// RCS расширяет или обновляет его примерно так:
// каждый раз, когда вы проверяете любую версию:
// (Другие системы контроля версий будут иметь аналогичные возможности)
const char IdString[] PROGMEM = "$Id: HowTo_IdString.ino,v 1.1 2023-12-26 18:16:06-05 jrobert Exp $";   // определение IdString во Flash



void setup() {
   Serial.begin(115200);
   Serial.print("");
   Serial.println(FLSTR_HLP(IdString));   // печатает IdString из Flash

   // .. дополнительные настройки ..
}

void loop() {
   Serial.print(F("Run time: "));
   Serial.println(millis());
   delay(5000);
}
,

Интересный. Можете ли вы показать код, как включить автоматическую идентификацию версии в цепочку сборки Arduino?, @PMF

Serial.println(__DATE__); Serial.println(__TIME__); показывает дату и время компиляции. Должно быть близко к времени сохранения исходного файла., @DataFiddler


0

Если вам нужен простой способ идентификации, используйте некоторые из предопределенные макросы* как автоматический источник информации:

void setup() {
  while (!Serial);
  Serial.begin(115200);
  Serial.print("(");
  Serial.print(__VERSION__);
  Serial.print(") ");
  Serial.print(__FILE__);
  Serial.print(": ");
  Serial.print(__DATE__);
  Serial.print(", ");
  Serial.println(__TIME__);
}

void loop() {
}

Вывод эскиза:

(7.3.0) /home/XXXXXXXX/name_of_sketch.ino: Dec 27 2023, 23:03:58

*) В моем случае (Arduino IDE версии 1.8.19) версия G++ — 7.3.0.

,