逐行读取文件ARDUINO

问题描述 投票:0回答:1

我正在为Arduino中的项目做一个功能,用于逐行读取存储在SdCard中的文件(log.txt),并通过蓝牙发送(每行)。日志格式为:

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

我需要将每行剪切成两个字符串(定界符='|'),然后发送到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

这些是正确的,但仅读取文件的一行...我需要读取此文件中的每一行。我该怎么做???提前谢谢!

string arduino-uno sd-card
1个回答
0
投票

确定,我找到了解决方案。代码是:

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();
}  

我希望这段代码对那些需要从文件中读取数据的人有所帮助!问候!

© www.soinside.com 2019 - 2024. All rights reserved.