Перейти к содержанию
bbh_blocked_dnftl

Dx Portal Странное Поведение Функций


Рекомендуемые сообщения

 

Доброго времени суток уважаемые!

 

Наблюдаю следующие странности, не пойму в чем дело...

 

Может кто-то мне объяснит, в чем ошибка.

 

Создал 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

 

Читать дальше

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...