首页 > 解决方案 > 逐行读取文件 ARDUINO

问题描述

我在 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

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

标签: stringarduino-unosd-card

解决方案


好的,我找到了解决方案。代码是:

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

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


推荐阅读