Работа с JsonArray

Xomyc
Offline
Зарегистрирован: 10.04.2020

Народ, помогите. Есть такая функция.

void addToBD(String fileName, char *instring) {
  int rec_to_delete;
  String fileData = readFile(fileName);
  char dataJson[fileData.length() + 1];
  strcpy(dataJson, fileData.c_str());
  DynamicJsonBuffer jsonBuffer;
  JsonArray& root = jsonBuffer.parseArray(dataJson);
  //Serial.println(instring);
  //JsonObject obj = jsonBuffer.createObject();
  JsonObject& obj = jsonBuffer.parseObject(instring);
  root.add(obj);
  if (fileName.indexOf("data_d.json") == 0) {
    rec_to_delete = root.size() - 1440;
  }
  else {
    rec_to_delete = root.size() - 2920;
  }
  if (rec_to_delete > 0) {
    for (int i=0; i<rec_to_delete; i++){
      root.remove(0);
    }
  }
  String out;
  root.printTo(out);
  out.replace("\n","");
  Serial.println(out);
  writeFile(fileName, out);
}

Она считывает JSON файл, парсит его. Потом работаем с JsonArray. Если число элементов массива больше определенного, надо убрать все начальные строки, чтобы число элементов стало равно требуемому. А потом добавляем новый объект. Вид Json объекта такой:

[{"d":[9,3,21,11,29,25.1,25.6,15.0,743.9]},
{"d":[9,3,21,11,39,25.3,25.7,16.2,744.0]},
{"d":[9,3,21,11,49,25.4,25.8,14.5,744.0]},
{"d":[9,3,21,11,50,25.5,25.8,16.1,744.0]},
{"d":[9,3,21,11,51,25.5,25.9,15.6,743.9]},
{"d":[9,3,21,11,52,25.5,25.9,15.2,744.0]},
{"d":[9,3,21,11,36,25.2,25.6,15.0,743.9]},
{"d":[9,3,21,11,56,25.6,26.1,16.1,744.1]}]

 

Xomyc
Offline
Зарегистрирован: 10.04.2020

Блин, нельзя почему-то редактировать. Не дописал я.

Так вот не хочет удалять нулевой элемент. Пишет

main:100:12: error: 'class ArduinoJson::JsonArray' has no member named 'remove'
root.remove(0);

Хотя ведь точно есть remove(i) у JsonArray.

Да, если этот Remove закомментировать, все работает.

b707
Offline
Зарегистрирован: 26.05.2017

дайте ссылку на библиотеку

Xomyc
Offline
Зарегистрирован: 10.04.2020

Так стандартная библиотека, которая с Arduino ide идет.

b707
Offline
Зарегистрирован: 26.05.2017

Xomyc пишет:

Так стандартная библиотека, которая с Arduino ide идет.

вы год на форуме - и все еще не поняли, что такие ответы приведут к тому. что никто вам отвечать вообще не будет?

Для "стандартной библиотеки" - стандартные примеры. изучайте

Xomyc
Offline
Зарегистрирован: 10.04.2020

Не понял, а что не так то? Я и изучаю. Вот такой сайт для изучения годится?https://arduinojson.org/v5/api/jsonarray/remove/

Вот путь к библиотеке C:\Users\dimon\Documents\Arduino\libraries\ArduinoJson

На всякий случай как я ее устанавливал:

1. Sketch--Include library--manage libraries

2. Нашел библиотеку ArduinoJson

3. Выбрал версию и нажал Install.

А то прям получается "Ты как челобитную царю подаешь?!"

b707
Offline
Зарегистрирован: 26.05.2017

Xomyc пишет:

Вот путь к библиотеке C:\Users\dimon\Documents\Arduino\libraries\ArduinoJson

вы правда такой дебил или прикидываетесь?

 

Xomyc
Offline
Зарегистрирован: 10.04.2020

Вы говорите:

b707 пишет:

дайте ссылку на библиотеку

Я говорю: библиотека встроена в Arduino IDE. Имеется ввиду (для особо одаренных поясняю), что я ее ниоткуда не качал и никаких ссылок не знаю.

Вы говорите, что мне никто не ответит. Я понимаю, что ситуация дурацкая и кто-то явно тупит (ну уж явно не я, потому, что я не знаю откуда берут библиотеки для вкладывания в дистрибутив Arduino IDE.

Далее вы скатываетесь до оскорблений. Ну что вы хотите услышать? Да вы дебил, т.к. не можете сформулировать что вам надо. Вуаля!

Я понимаю вы сейчас надуетесь как индюк и начнете либо оскорблять снова, либо замолчите, мол решай сам. Ну чтож, выходит не договорились!

Вот для статистики первый пост вы вставили в 12:01, последний в 14:01. Ровно 2 часа для скатывания к оскорблениям и никакого решения. Меня на работе бы уже уволили! Я конечно всего год как на форуме, но и я знаю одну истину: не знаешь, не лезь! А то так потрепаться зашли.

rkit
Offline
Зарегистрирован: 23.11.2016

Xomyc пишет:

 библиотека встроена в Arduino IDE. Имеется ввиду (для особо одаренных поясняю), что я ее ниоткуда не качал и никаких ссылок не знаю.

Врешь. Вот перечень встроенных в последнюю IDE библиотек.

Xomyc
Offline
Зарегистрирован: 10.04.2020

Клянусь! Да, сначала версию 6 скачал. Но это было уже очень давно. Попытался тогда с ней, но все почти примеры по 5 версию были и я плюнул. Удалил библиотеку.

После этого прошло с пол года. Далее я действовал как писал выше. Выбрал версию 5.8.3 и нажал Install. Т.е. 5 версию я точно ниоткуда не качал.

Благо есть возможность, взял чистый ноут, установил на него Arduino IDE. Как и писал выше зашел в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить (все по русски, ноут с русской ОС). Библиотека встала и появилась по тому же пути, что я указал ранее.

З.Ы. Уж даже я хот и неопытный пользователь, знаю, что не все библиотеки, что есть изначально установлены.

b707
Offline
Зарегистрирован: 26.05.2017

Xomyc пишет:

я знаю одну истину: не знаешь, не лезь!

не лезу

Xomyc
Offline
Зарегистрирован: 10.04.2020

b707 пишет:

не лезу

Ну это и доказывать не надо было. Я так и написал. Обиделся и в домик спрятался вместо того, чтобы объяснить чего хотел то. Ну ничего не ты один, инет большой.

Xomyc
Offline
Зарегистрирован: 10.04.2020

Для чистоты эксперимента, чтобы меня не обвиняли во лжи, быстренько на VMware развернул новую винду на 10. Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить. Так что если еще есть мужество на продолжение диалога, поясните вопрос про ссылку на библиотеку.

З.Ы. Гражданин-товаришч-барин rkit так же поаккуратнее в выражениях!

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Мне кажется или вот это:

Xomyc пишет:

Я говорю: библиотека встроена в Arduino IDE.

с вот этим

Xomyc пишет:

Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить.

мягко говоря не стыкуется.... ?

По факту вы установили библиотеку, в последнем случае версии 5.8.3. через менеджер библиотек. Этого от Вас товарищ b707 и добивался услышать. Сокращенный ответ должен был звучать так: "Устанавливал через менеджер бибилиотек, название в поиске: ArduinoJson, версия 5.8.3."

Вроде ничего не напутал?...

kalapanga
Offline
Зарегистрирован: 23.10.2016

Xomyc пишет:

Для чистоты эксперимента, чтобы меня не обвиняли во лжи, быстренько на VMware развернул новую винду на 10. Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить. Так что если еще есть мужество на продолжение диалога, поясните вопрос про ссылку на библиотеку.

Вы не лжете, Вы тёплое с мягким не различаете и упорствуете в своей ошибке.

"Встроенными" называют библиотеки, не требующие действий по их установке, идущие в поставке сразу вместе с Arduino IDE. Они располагаются не в документах пользователя, а в той папке, куда установлена Arduino IDE в подпапке libraries. Для этих библиотек с некоторой натяжкой можно также применить термин "стандартные".

Всё остальное, устанавливаемое руками или через менеджер библиотек, - это библиотеки сторонние. Они сегодня есть - завтра нет, сегодня называются так - завтра эдак. И если Вы обсуждаете какую-то библиотеку, то нужно указывать более точную информацию, чем одно имя файла, например ссылку на неё, автора, версию.

Xomyc
Offline
Зарегистрирован: 10.04.2020

BOOM пишет:

Мне кажется или вот это:

Xomyc пишет:

Я говорю: библиотека встроена в Arduino IDE.

с вот этим

Xomyc пишет:

Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить.

мягко говоря не стыкуется.... ?

По факту вы установили библиотеку, в последнем случае версии 5.8.3. через менеджер библиотек. Этого от Вас товарищ b707 и добивался услышать. Сокращенный ответ должен был звучать так: "Устанавливал через менеджер бибилиотек, название в поиске: ArduinoJson, версия 5.8.3."

Вроде ничего не напутал?...

Извиняюсь, а я в ответе на его пост от

 

Xomyc
Offline
Зарегистрирован: 10.04.2020

kalapanga пишет:

Xomyc пишет:

Для чистоты эксперимента, чтобы меня не обвиняли во лжи, быстренько на VMware развернул новую винду на 10. Прям сразу скачал Arduino IDE 1.8.9, установил ее полностью. Затем опять в Скетч--Подключить билиотеку--Управление библиотеками. Вписал ArduinoJson в поиске выбрал версию 5.8.3 и нажал Установить. Так что если еще есть мужество на продолжение диалога, поясните вопрос про ссылку на библиотеку.

Вы не лжете, Вы тёплое с мягким не различаете и упорствуете в своей ошибке.

"Встроенными" называют библиотеки, не требующие действий по их установке, идущие в поставке сразу вместе с Arduino IDE. Они располагаются не в документах пользователя, а в той папке, куда установлена Arduino IDE в подпапке libraries. Для этих библиотек с некоторой натяжкой можно также применить термин "стандартные".

Всё остальное, устанавливаемое руками или через менеджер библиотек, - это библиотеки сторонние. Они сегодня есть - завтра нет, сегодня называются так - завтра эдак. И если Вы обсуждаете какую-то библиотеку, то нужно указывать более точную информацию, чем одно имя файла, например ссылку на неё, автора, версию.

Ну теплое с мягким хрен с ними. Меня спрашивают ссылку на библиотеку, я говорю, что не качал ее, а ставил со стандартного набора. Ну ведь правда ведь я не могу дать ссылку на библиотеку! Я так и написал.

Народ, вы скажите, если библиотека версии 5.8.3 ArduinoJson бывает разная в наборах к Arduino IDE, то как это различить и какую из библиотек версии 5.8.3 надо поставить? Или напишите, что в 5.8.3 не поддерживается Remove! Ну просто обсуждаем уже пол дня что теплое, а что мягкое, а ни на грамм не продвинулись. Я могу дать ссылку откуда скачал Arduino IDE на новую виртуалку. https://amperka.ru/page/arduino-ide. Я к тому что там лежит библиотека, которой я пользуюсь.

b707
Offline
Зарегистрирован: 26.05.2017

Xomyc пишет:

Я могу дать ссылку откуда скачал Arduino IDE на новую виртуалку. https://amperka.ru/page/arduino-ide. Я к тому что там лежит библиотека, которой я пользуюсь.

блиин.... ну я просто не выдержал уже. Ну нахера мне ссылка на Амперку7

Полено умнее вас, ну вот по другому и не сказать... Вам уже два человека, кроме меня. сказали - что ЭТА БИБЛИОТЕКА НЕ ЛЕЖИТ в дистрибутиве АРДУИНО ИДЕ! Нет ее там, блин!

По вашим же словам - Вы сначала ставите ИДЕ, а потом ручками подтягиваете туда библиотеку, через менеджер библиотек.  И что вы туда подтягиваете - один черт знает.  Как мне это узнать без ссылки? предлагаете тоже поставить с нуля ИДЕ и выбрать библиотеку в менеджере?? - а "ключ от квартиры где деньги лежат" не желаете?

А вы продолжаете твердить, что библиотека у вас стандартная и лежит в ИДЕ.

 

Хомус, вы не петрите в элементарных вещах. Сходили бы, что ли, почитали описание для чайников на сайте у гайвера того же, что такое библиотеки и как их ставить.

Xomyc
Offline
Зарегистрирован: 10.04.2020

Хорошо. И я думаю, что те библиотеки уже есть в дистрибутиве. Ну как скажем вы винду поставили, но ставится стандартный набор компонентов. А вам нужен скажем telnet client. Вы идете в компоненты и доставляете его оттуда. Я думал, что и с библиотеками то же самое происходит. Если я не прав, то вот все что там есть в менеджере библиотек. Вот ссылка, которая там значится more info.

https://arduinojson.org/?utm_source=meta&utm_medium=library.properties

Если это то что надо, то надо было так и сказать. Еще раз скажу, что я думал, да и пока думаю, что все эти библиотеки лежат в дистрибутиве свернутые и не установленные.

Ну если уж и это не то что надо, тогда не знаю где еще взять ссылку? Как понять откуда менеджер библиотек берет саму библиотеку.

Oregon
Offline
Зарегистрирован: 19.10.2013

Xomyc, если не секрет, что за проект такой? Немного сталкивался с этой библиотекой, ну так, немного совсем.