iniFile

Тема в разделе "Arduino & Shields", создана пользователем andy_maw, 10 май 2019.

  1. b707

    b707 Гуру

    ТС, выполните на карточке команду "ls" или "dir" - что там у вас. И выложите результат. Если на карте сотни файлов и список слишком большой - можно сократить
     
  2. andy_maw

    andy_maw Нуб

    Entry
    net.ini
    1
    net.ini
    Point#1
    Point#2
    Point#3
    Point#4
    1207 <- вывел file.size совпадает с виндой
    ⸮14052019.dat
    Ini file net.ini does not exist

    на карте всего 2 файла - net.ini и 14052019.dat
     
  3. Asper Daffy

    Asper Daffy Гуру

    Придётся ещё глубже лезть.

    Открывай файл File.cpp (он там в поставке IDE лежит рядом с SD.cpp).

    В нём ищи конструктор "File::File(SdFile f, const char *n)"

    Код (C++):
    File::File(SdFile f, const char *n) {
      // oh man you are kidding me, new() doesnt exist? Ok we do it by hand!
    ////// (1)
      _file = (SdFile *)malloc(sizeof(SdFile));
      if (_file) {
        memcpy(_file, &f, sizeof(SdFile));
     
        strncpy(_name, n, 12);
        _name[12] = 0;
     
        /* for debugging file open/close leaks
           nfilecount++;
           Serial.print("Created \"");
           Serial.print(n);
           Serial.print("\": ");
           Serial.println(nfilecount, DEC);
        */

      }
    ////// (2)
    }
    В точке (1) вставляй печать строки "Inside constructor",
    а в точке (2) вставляй else Serial.println("A vot hren tam!");

    Запусти, и покажи, что получилось.
     
  4. parovoZZ

    parovoZZ Гуру

    а там нет кириллицы в названии или пробелов каких?
     
  5. Asper Daffy

    Asper Daffy Гуру

    andy_maw, ну, как там?

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

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

    Мне сейчас надо с работы домой переехать, так что я отрублюсь на пару часов. Вечером я вернусь. Ты пока выкладывай последний тест.
     
  6. andy_maw

    andy_maw Нуб

    Created empty file object
    Entry
    /net.ini
    1
    net.ini
    Point#1
    Point#2
    Created empty file object
    Point#3
    Point#4
    1207
    Created "net.ini": 4
    net.ini
    Ini file exists
    section 'network' has an entry 'mac' with value 01:23:45:67:89:AB
    Could not read 'nosuchkey' from section 'network', error was key not found
    Could not read 'nosuchkey' from section 'nosuchsection', error was section not found
    The value of 'allow put' in section '/upload' is TRUE

    как то получилось (пока не по феншую)
     
    Последнее редактирование: 15 май 2019
  7. andy_maw

    andy_maw Нуб

    повторить это (см выше) полностью несколько раз подряд не удалось
    если файл открывался то не хватало размера буфера для чтения секций
    иногда файл не открывался
    это после того как вставили Serial в нескольких местах исходников
    любое изменение в Serial (изменение кол букв или закоментировать строку) стопорит открытие файла
    а может не хватает памяти для данного скетча - Arduino UNO
     
  8. Asper Daffy

    Asper Daffy Гуру

    А Вы вставили последнюю печать, которую я просил? Она срабатывала?
     
  9. andy_maw

    andy_maw Нуб

    да - проскакивала фраза "хрен вам", но не каждый раз
    в этой связи в исходниках тоже есть закомментированные строки для дабага чем я и воспользовался
    люди не будут выкладывать не проверенное решение - подумал я и минимизировал скеч (на удачу)
    и все пошло!:)
    может я плохо искал информацию об особенностях применения стандартного скетча для UNO (а может не искал)
    а так вполне удобная прога, а то хотел с горя писать с нуля :confused:
    на этом все. всем спасибо за активное участие и помощь в освоении ARDUINO
     
  10. Asper Daffy

    Asper Daffy Гуру

    В нормально работающей программе не должна никогда - это означает, что программа запросила память, а ей не дали! Такого быть не должно.