ArduinoJson добавление данных и (или) преобразование из byte в String

notfound
Offline
Зарегистрирован: 09.04.2022

Прошу сразу больно не пинать за мою тупость, я только учусь)))

Ситуация такая, есть дубликатор  ключей TouchMemory (iButton);

свои функции  выполняет как надо, но я хочу что бы он сохранял прочитанные ключи в память LittleFS (esp8266) в файл Json используя библиотеку ArduinoJson;

И когда я пытаюсь сохранить ключ в json, то сохраняется каждый считанный байт в новую строчку и получается такой вот вид

key: Array(10)
0: "0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F"
1: "0x01, 0xBE, 0x40, 0x11, 0x5A, 0x36, 0x00, 0xE1"
2: "1"
3: "3"
4: "2c"
5: "b5"
6: "d"
7: "0"
8: "0"

В строчках 0 и 1 это то как должно записаться, и это я сам вручную записал в json.

А со строчки 2-8 это так как записывает считанный ключ, Но мне нужно соответственно как 0 и 1 строчке.

вот отрывок кода когда читается приложенный ключ и передается в функцию записи в json

for (byte x = 0; x < 8; x++)
    {


    display.print(addr[x], HEX); //Выводит на экран считанный код в виде 1:3:2C:B5:D:0:0:BD
    if (readflag == 0) {
      ReadID[x] = (addr[x]);   //ReadID имеет тип Byte
save_tmkey("FUCK", String(ReadID[x],HEX)); //Передаю в функцию для сохранения в json
    }
    
   if (x==7){
     
     break;
   } 
display.print(":");
    }

Вот функция JSON

void save_tmkey(String nameKey, String idKey){
      DynamicJsonDocument doc(3056);
      File file = LittleFS.open("/json/save_tm.json", "r");
  DeserializationError error = deserializeJson(doc, file); 
if (error) {
  Serial.print(F("deserializeJson() Не выполнена:  "));
  Serial.println(error.f_str());
  return;
}

doc["data"]["name"].add(nameKey);
 doc["data"]["key"].add(idKey);
  file = LittleFS.open("/json/save_tm.json", "w"); 
  if (serializeJsonPretty(doc, file)) { 
    Serial.println("Ништяк, файлик записан");
  } else {
    Serial.print ("АААА, Не могу записать файл, прости хозяин!!");
  }
  file.close(); 
  recordname=doc["data"]["name"].size();
  recordkey=doc["data"]["key"].size();
}

Я понимаю что надо сделать, но не знаю как этого добиться. И по моему понятию, я должен либо преобразовать массив ReadID из byte в String и передать на запись, что бы записалось одной строкой, либо так же как то в цикле функции json добавлять в одну строку полученные данные.Но что бы я не пробовал, ни чего не получается. 

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

vrd
Offline
Зарегистрирован: 20.01.2022

В массив значения записываются побайтово - одна ячейка один байт. А вы хотите в одну ячейку 9 байт засунуть? Выкладывайте весь код.

В начале подпрограммы воткните сЕриал и увидите какие значения приходят. При отладке этих сЕриалов обычно как блох на собаке.