меня есть, среди прочих, следующие строки в функции петли:функция Ардуино мешая петли кода()
item = String(buffer);
Serial.println(item);
где элемент представляет собой строку и буфер массив символов. Это отлично работает, пока я не добавить функцию в конце файла (за пределами функции цикла):
void storeData(String item){
Serial.println("StoreData");
for (int k=0; k<11; k++){
Serial.print("*");
if(item == products[k]){
items[index] = names[k];
index++;
Serial.print("\n");
Serial.print(item);
Serial.print("\t");
Serial.print(names[k]);
}
}
}
который сравнивает строку item
в список значений и сохраняет соответствующее имя, если значение найдено. Когда я добавить этот код в конце концов, даже если я не позвоню на функции, выход преобразования становится:
978973103 Á
9789731030418
Если первое значение является некорректное преобразование и второй из них является значение от buffer
.
Что может произойти? Я перезапустил и переработал и переделал все с нуля снова и снова.
Если проблема с памятью (нехватка памяти) отсутствует, вы уверены, что item = String (buffer) копирует массив с завершающим нулем? Быстрая печать сразу после назначения должна прояснить это. Если элемент верен, как показывают другие, библиотека MemoryFree хороша для использования, по крайней мере во время разработки, чтобы следить за доступной памятью. – user2019047
Массив содержит не более 14 символов (цифр). Он напечатан правильно ('9789731030418'), в отличие от преобразования, которое выходит из строя' 978973103 Á '... – FloIancu
У меня была странная проблема в то время, когда я передал буфер символов функции, и состояние программы исчезло бы после какое-то время. Я удалил буфер char из вызова функции и использовал его как глобальную переменную, и все было в порядке. Я также читал, что тип String имел некоторые ошибки распределения в более ранних версиях, какая версия является вашим компилятором? – user2019047