Чтение из EEPROM и объединение

Я пытаюсь прочитать из EEPROM, объединить информацию и отправить ее через SoftwareSerial с помощью функции write(), но получаю следующую ошибку

error: invalid operands of types 'const char [3]' and 'const char*' to binary 'operator+'

void loop()  
{ 
  const char* eTest1 = EEPROM.read(1);
  const char* eTest2 = EEPROM.read(2);
  const char* eTest3 = EEPROM.read(3);

  char combinedVal[] = eTest1+":"+eTest2+":"+eTest3;
  bluetooth.write(combinedVal);
}

, 👍1

Обсуждение

Кстати: для строки C (массив символов заканчивается 0) функция write такая же, как print(), @Juraj


1 ответ


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

3

Для этого нельзя использовать оператор +.

Однако, поскольку EEPROM.read возвращает только один байт, а не строку, вы можете сделать гораздо более простую реализацию:

void loop()  
{ 
  char result[] = "1:2:3";
  for (int item = 0; item < 3; item++)
  {
    result[item * 2] = EEPROM.read(1 + item);
  }
}

Сначала создается строка "1:2:3", в которой цифры перезаписываются в цикле for этим элементом. Обратите внимание, что цифры в строке не имеют значения, это просто свободный «комментарий», он также должен работать при использовании «x:x:x».

,

Отлично, он пытается их объединить, но выдает следующее предупреждение об ошибке: неверное преобразование из uint8_t {aka unsigned char} в 'const char*' [-fpermissive] const char* eTest1 = EEPROM.read(1); ^, @Rickstar

@Rickstar Я сделал лучшую реализацию, поскольку EEPROM.read всегда возвращает ровно один байт (символ)., @Michel Keijzers

@Rickstar EEPROM.read() возвращает один байт, а не указатель на строку., @KIIV

Спасибо @MichelKeijzers, @Rickstar

Пожалуйста., @Michel Keijzers