string - 逐行读取文件 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
这些是正确的,但只读取文件的一行...我需要读取此文件中的每一行。我该怎么做???提前谢谢!
解决方案
好的,我找到了解决方案。代码是:
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();
}
我希望这段代码对那些需要从文件中读取数据的人有所帮助!问候!
推荐阅读
- c - 为什么 Cert-C 禁止在 while 循环声明中进行赋值?
- ios - iOS UITableView 偏移刷新控件
- r - 处理各种调查样本中的多个变量
- apache - 在 httpd.conf 文件中插入行的 shell 脚本
- python - 如何从 Python 运行时云函数访问 Google Cloud Platform Firestore 触发器
- powershell - 无法将我的班级的实例添加到列表中
- spring - Rabbit MQ 启动 Spring Boot Run 失败(连接被拒绝)
- json.net - 通过反射调用 NewtonSoft SerializeObject 和 DeserializeObject 方法以解决版本不匹配问题
- c++ - 从 C++14 开始合法使用尾随返回类型语法
- android - 创建包含 recyclerView 中项目数量的 TextView