NewSistems Опубликовано 15 февраля, 2016 Жалоба Поделиться Опубликовано 15 февраля, 2016 Доброго времени суток уважаемые! Наблюдаю следующие странности, не пойму в чем дело... Может кто-то мне объяснит, в чем ошибка. Создал 2 скетчка проекта - в одном Setup и Loop, в другом лежат функции Первый имеет вид SH.ino #include #include #include [/size][/font][/color]void setup(void){[color=#555555][font=Verdana, Geneva, Arial, sans-serif][size=3] Serial.begin(9600); InitSD();[/size][/font][/color] if (ReadConfFile()) { Serial.println("CONFIG SUCCESS READ"); } CreateConfigFileSD();}[color=#555555][font=Verdana, Geneva, Arial, sans-serif][size=3]void loop(void){ delay(1000);} Вызываю функцию проверки SD карты и наличия на нем файла конфига, далее читаю данные из конфига и после этого хочу вызвать функцию, которая удалит старый файл и создаст новый Скетч SH_Func.ino static char* CONFIG_FILE_NAME = "config.ini";static char* CONFIGTMP_FILE_NAME = "config_tmp.ini";[/size][/font][/color]void InitSD(void){ Serial.println("Initializing SD card:"); if (!SD.begin(4)) { Serial.println("ERROR - SD card initialization failed!"); return; } Serial.println("SUCCESS - SD card initialized.");[color=#555555][font=Verdana, Geneva, Arial, sans-serif][size=3] // проверяем наличие файлов на карте if (!SD.exists(CONFIG_FILE_NAME)) { Serial.println("ERROR - Can't find " + String(CONFIG_FILE_NAME) + " file!"); return; } Serial.println("SUCCESS - Found " + String(CONFIG_FILE_NAME) + " file."); if (!SD.exists(CONFIGTMP_FILE_NAME)) { Serial.println("ERROR - Can't find " + String(CONFIGTMP_FILE_NAME) + " file!"); return; } Serial.println("SUCCESS - Found " + String(CONFIGTMP_FILE_NAME) + " file.");}[/size][/font][/color]// Читаем файл конфига с карты памяти при каждой загрузке системыboolean ReadConfFile(){ IniFile ini(CONFIG_FILE_NAME); if (!ini.open()) { Serial.print("Ini file "); Serial.print(CONFIG_FILE); Serial.println(" does not exist"); } else if (!ini.validate(bufConf, bufferLen)) { Serial.print("ini file "); Serial.print(ini.getFilename()); Serial.print(" not valid: "); PrintErrorMessage(ini.getError()); } else if (WriteGeneralInfoStruct(ini)) { return true; } return false;}[color=#555555][font=Verdana, Geneva, Arial, sans-serif][size=3]//Функция удаляет старый файл конфига с карты памяти и собирает, пробегаясь по структурамvoid CreateConfigFileSD(){ Serial.println("CREATE CONFIG FILE START..."); File confFile; if (SD.exists(CONFIG_FILE_NAME)) { Serial.println("FOUND CONFIG.INI FILE"); confFile = SD.open(CONFIGTMP_FILE_NAME, FILE_WRITE);// open file if (confFile) { Serial.println("CREATE CONFIG_TMP.INI FILE SUCCESS"); WriteDataToFile(confFile); SD.remove(CONFIG_FILE_NAME); confFile.close(); } else Serial.println("CREATE CONFIG_TMP.INI FILE FAIL"); return; } else if (SD.exists(CONFIGTMP_FILE_NAME)) { Serial.println("FOUND CONFIG_TMP.INI FILE"); confFile = SD.open(CONFIG_FILE_NAME, FILE_WRITE);// open file if (confFile) { Serial.println("CREATE CONFIG.INI FILE SUCCESS"); WriteDataToFile(confFile); SD.remove(CONFIGTMP_FILE_NAME); confFile.close(); } else Serial.println("CREATE CONFIG.INI FILE FAIL"); return; }} Первые 2 функции отрабатываю на отлично, в сериале вижу соответствующие сообщения, но вот функция создания файла никак не хочет отрабатывать, доходит до этого места //Функция удаляет старый файл конфига с карты памяти и собирает, пробегаясь по структурамvoid CreateConfigFileSD(){ Serial.println("CREATE CONFIG FILE START..."); File confFile; if (SD.exists(CONFIG_FILE_NAME)) { Serial.println("FOUND CONFIG.INI FILE"); confFile = SD.open(CONFIGTMP_FILE_NAME, FILE_WRITE);// open file if (confFile) {[/size][/font][/color] и вываливается в else...попросту не хочет создавать файл на карте памяти новый и его писать... грешил на карту памяти и прочее, но начал тестить другим подходом, если пихаю код создания нового файла непосредственно сюда в setup в основном файле скетча void setup(void){ Serial.begin(9600); InitSD();[/size][/font][/color][color=#555555][font=Verdana, Geneva, Arial, sans-serif][size=3] if (ReadConfFile()) { Serial.println("CONFIG SUCCESS READ"); Serial.println("CREATE CONFIG FILE START..."); File confFile; if (SD.exists(CONFIG_FILE_NAME)) { Serial.println("FOUND CONFIG.INI FILE"); confFile = SD.open(CONFIGTMP_FILE_NAME, FILE_WRITE);// open file if (confFile) { Serial.println("CREATE CONFIG_TMP.INI FILE SUCCESS"); WriteDataToFile(confFile); SD.remove(CONFIG_FILE_NAME); confFile.close(); } else Serial.println("CREATE CONFIG_TMP.INI FILE FAIL"); return; } }} ВСЕ ЗАПИСЫВАЕТСЯ ПРЕКРАСНО - находит старый файл, создает новый, пишет туда данные и удаляет старый, ПРИЧЕМ функции которые отрабатывают первые и находятся так же во втором скетче работают без нареканий... В чем может быть проблема? Так же переносил функцию создания файла в основной скетч и это не дало никаких результатов - файл не создается, пытался вызвать ее так же из Loop аналогично - ничего... Какие у кого мысли? Раздел: Arduino и Raspberry Pi Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.