Как преобразовать массив символов в строку в arduino?

Я хочу преобразовать массив символов const в PROGMEM в строку. Как мне это сделать?

const char charArray[] PROGMEM = "Some text";

, 👍2

Обсуждение

Если вы имеете в виду строку в стиле C++, я думаю, вам просто нужно это сделать - https://stackoverflow.com/questions/8960087/how-to-convert-a-char-array-to-a-string, @Tri

Нет, я хочу преобразовать это в Arduino-IDE. Это неправильно работает!, @Mohamad_Frm

Я просто увидел ответ и понятия не имел, что это вообще возможно. Я думаю, что это ваш ответ., @Tri

К сожалению, это не работа. Однако спасибо вам., @Mohamad_Frm

что это значит? "это не работа" .... это утверждение не содержит полезной информации .... описание фактической ошибки помогло бы, @jsotola


1 ответ


Лучший ответ:

5

вы можете использовать приведение к __FlashStringHelper для вызова правильного конструктора класса String. Это конструктор, который копирует массив символов из PROGMEM. __FlashStringHelper предназначен в качестве возвращаемого типа для макроса F ().

const char charArray[] PROGMEM = "Some text";

void setup() {

  Serial.begin(115200);

  String s((const __FlashStringHelper*) charArray);

  Serial.println(s);
}

void loop() {
}
,

Это верно, но как это сделать в цикле или других функциях?, @Mohamad_Frm

PROGMEM всегда глобален. и setup () - это такая же функция, как и все остальные, таким же образом, @Juraj

Абсолютно, но когда я напишу этот код в цикле, компилятор выдаст эту ошибку: конфликтующее объявление "Строка s", @Mohamad_Frm

Большое спасибо. Ошибка компилятора произошла из-за другой части моего скетча., @Mohamad_Frm