我正在为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
这些是正确的,但仅读取文件的一行...我需要读取此文件中的每一行。我该怎么做???提前谢谢!
确定,我找到了解决方案。代码是:
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();
}
我希望这段代码对那些需要从文件中读取数据的人有所帮助!问候!