Прочитать файл построчно ARDUINO - PullRequest
0 голосов
/ 26 мая 2020

Я выполняю функцию для своего проекта в Arduino, для построчного чтения файла (log.txt), хранящегося на SdCard, и отправки (каждой строки) его по Bluetooth. Формат журнала:

020/5/25 18:15:46|0*26.0 34.5
020/5/25 18:16:46|0*26.0 34.2

Мне нужно разрезать каждую строку на две строки (delimiter = '|'), а затем отправить в приложение Android (через BLE). Я использую следующую библиотеку. для разрезания каждой строки на две строки: https://www.somosioticos.com/archivos/separador.zip И мой код:

void R_SdCard(){
   File printFile;
   String Buffer_Read_Line = "";
   String Sub_String_A = "";
   String Sub_String_B = ""; 

   printFile = SD.open("Log.txt", FILE_READ);

   while(printFile.available()){
     Buffer_Read_Line=printFile.readStringUntil("\r\n");
     Sub_String_A=S.separa(Buffer_Read_Line,'|',0);
     Sub_String_B=S.separa(Buffer_Read_Line,'|',1);
     HM10.println(Sub_String_A);
     delay(3000);
     HM10.println(Sub_String_B);
     delay(3000);
   }
   printFile.close();
}

Для строки Sub_String_A вывод:

020/5/25 18:15:46

Для строки Sub_String_B, на выходе получается:

18:15:46

Это верно, но читается только одна строка файла ... Мне нужно прочитать каждую строку в этом файле. Как мне это сделать??? Спасибо заранее!

1 Ответ

0 голосов
/ 31 мая 2020

Хорошо, я нашел решение. Код:

void R_SdCard(){   
  File printFile;
  String Buffer_Read_Line = "";
  String Sub_String_A = "";
  String Sub_String_B = ""; 
  int LastPosition=0;

  printFile = SD.open("Log.txt");
  int totalBytes = printFile.size();

  while (printFile.available()){
    for(LastPosition=0; LastPosition<= totalBytes; LastPosition++){
      char caracter=printFile.read();
      Buffer_Read_Line=Buffer_Read_Line+caracter;
      if(caracter==10 ){            //ASCII new line
        Serial.println(Buffer_Read_Line);
        Sub_String_A=S.separa(Buffer_Read_Line,'|',0);
        Sub_String_B=S.separa(Buffer_Read_Line,'|',1);
        HM10.println(Sub_String_A);
        HM10.println(Sub_String_B);
        Buffer_Read_Line="";      //string to 0
      }
    }
  }
  printFile.close();
}  

Надеюсь, этот код будет полезен тем, кому нужно читать данные из файла! Привет!

...