Как правильно обработать ошибки взятые из библиотеки DFRobotDFPlayerMini, или почему у меня не получается корректно их обработать?

Иди запросы GET изучай и что такое хедеры (header).

Где ты в этом примере пробел увидел?

А в чем проблема? У меня эта часть кода отрабатывает хорошо!

Все ссылки фиксятся как нужно. Проблема именно с тем, что ошибки плеера, которые выводятся, выводятся на прошлый раз. Тоесть ошибки не имеют актуальные данные

А пробел тут

Где «тут»?
Ты как отправляешь запросы? Через браузер? Через браузер.
Где вот тут в конце пробелы или что-то иное?


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

Хорошо, почему тогда я получаю значение без каких либо ошибок, и код отрабатывает это?

А от чего у тебя ошибки должны быть, по твоему? Ты же оперируешь с числами.

Я выше скинул то, что выводит каждая переменная. Она же выводит адекватно то что попадает в адресную строку, а если не фиксить пробел, она будет выводить это: 1 HTTP/1.1

Отладка, это не только в монитор порта смотреть.
Напиши строку get запроса и выведи в монитор порта индексы, найденные indexof. Последний, думаю или len() или strlen() вернет. Возможно нужно будет минус 1 сделать (я не работал со строками вплотную, не знаю нулевой символ учитывается или нет),

От этого уже смотрим дальше.

Бл#, иди читай. Чего ты не читаешь что тебе пишут?!

В общем, задание на вечер:
Берёшь строку в get-запросе браузера (например, «http://<твой ip>/?m=2&n=4»).
Выводишь в монитор порта их найденные индексы, сравниваешь - совпадают ли. Потом выводишь в монитор порта найденные значения (чтобы m было равно 2, а n было равно 4). Пока это не сделаешь - дальше не движемся. Забудь пока про dfplayer

1 лайк

Что интересно, я “подкинул” этот кусок в WOKWI, и он отработал норм(правда долго не возился), хоть я и не заметил косяк с пробелом.
Возможно, это тот случай, что я описывал в своей теме

Но не факт, конечно, что это так…

Пусть на своём железе обкатает. Если парсинг будет верным - пойдем дальше.
ЛЮБУЮ проблему нужно решать ПОСЛЕДОВАТЕЛЬНО.
Это и ремонта и отладки и чего угодно касается.

1 лайк

Кстати, я бы действовал иначе (с проверки dfplayer и ближе к веб), но с веб к плееру двигаться тс выбрал. Собственно пофик.

Вот, посмотри, может я туплю…

Спойлер
String val[5] = {  "http://192.168.1.177/?dir=mp3&name=2",
                   "http://192.168.1.177/?dir=mp4&name=3",
                   "http://192.168.1.177/?dir=mp5&name=4",
                   "http://192.168.1.177/?dir=mp6&name=5",
                   "http://192.168.1.177/?dir=mp7&name=6",
};

void setup() {
  Serial.begin(9600);
  static uint8_t c = 5;
  while(c--)//от последнего))
  {
   int getSearch = val[c].indexOf("?");
          int getSearchL = val[c].indexOf("=");
          String GET = val[c].substring(getSearch + 1, getSearchL);
          Serial.println(GET);
           //тут я получаю значение первого параметра
          int keySearch = val[c].indexOf("=");
          int keySearchL = val[c].indexOf("&");
          String DIR = val[c].substring(keySearch + 1, keySearchL);
          Serial.println(DIR);
          /*Тут я получаю GET второго параметра*/
          int getSearch1 = val[c].indexOf("&");
          int getSearchL1 = val[c].lastIndexOf("=");
          String GET1 = val[c].substring(getSearch1 + 1, getSearchL1);
          Serial.println(GET1);
          //тут я получаю значение второго параметра
          int keySearch1 = val[c].lastIndexOf("=");
          int keySearchL1 = val[c].lastIndexOf(" ");
          String key = val[c].substring(keySearch1 + 1, keySearchL1);
          Serial.println(key);
           int ID = atoi(key.c_str());
           Serial.println(ID);
  }
}  

void loop() {
  

}
Спойлер

Всё не влезло на скрин, но там норм

А почему с последнего?

А какая разница? Для разнообразия))

Ну может и никакая, но я штаны через голову не надеваю ))

Если парсится всё хорошо (а у ТС так же хорошо?), то можно идти дальше.

ЗЫ: Терминатор 3 на фоне включен, старые добрые звуки диал-ап модема ))

Если брать тот код выше, то вот что получается…

23:19:23.266 -> dir
23:19:23.266 -> mp7
23:19:23.266 -> name
23:19:23.266 -> 6
23:19:23.266 -> 6
23:19:23.266 -> dir
23:19:23.266 -> mp6
23:19:23.299 -> name
23:19:23.299 -> 5
23:19:23.299 -> 5
23:19:23.299 -> dir
23:19:23.299 -> mp5
23:19:23.299 -> name
23:19:23.299 -> 4
23:19:23.299 -> 4
23:19:23.333 -> dir
23:19:23.333 -> mp4
23:19:23.333 -> name
23:19:23.333 -> 3
23:19:23.333 -> 3
23:19:23.333 -> dir
23:19:23.333 -> mp3
23:19:23.365 -> name
23:19:23.365 -> 2
23:19:23.365 -> 2

А можно попросить не заставлять людей ломать глаза картинками, а вставлять код и вывод в сериал текстом? Спасибо ))

3 лайка

Ещё прикол в том, что
ТС сравнивает не символы, а строки)) “=” это читай ‘=’ и ‘\0’
Т.к ‘\0’ автоматом добавляется.
Но всё работает верно