关于f_read读取TXT文件显示到液晶屏上的问题

比如我读300个字在串口上可以正常显示,但是在液晶屏上只显示TXT文件的第一行,这是为什么呢?

字符串中有换行回车或0x1A文件结束符,我猜。

看你的f_read的具体参数

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/690854
  • 以下回答来自chatgpt:

    首先,我们需要先确认液晶屏是否能够正常显示文本。如果液晶屏本身没有问题,那么可以考虑对读取文件的代码进行优化。

    我们可以尝试增加一个循环,读取整个文件内容,并将每行内容分别显示在液晶屏上,如下所示:

    #include <LiquidCrystal.h>
    #include <SD.h>
    
    File myFile;
    
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    
    void setup() {
      lcd.begin(16, 2);
      Serial.begin(9600);
      while (!Serial) {}
    
      Serial.print("Initializing SD card...");
      // 确认SD卡是否能够正常读取
      if (!SD.begin(4)) {
        Serial.println("initialization failed!");
        return;
      }
      Serial.println("initialization done.");
    
      myFile = SD.open("example.txt");
    
      if (myFile) {
        Serial.println("example.txt:");
    
        // 读取整个文件内容
        while (myFile.available()) {
          // 读取每行内容
          String line = myFile.readStringUntil('\n');
          // 在液晶屏上显示每行内容
          lcd.print(line);
          lcd.setCursor(0, 1);
        }
        myFile.close();
      } else {
        Serial.println("error opening example.txt");
      }
    }
    
    void loop() {
    
    }
    

    在上述代码中,我们使用了一个while循环,读取整个文件内容,并将每行内容分别显示在液晶屏上。在显示每行之后,我们还将光标移动到下一行的开头,以便继续显示下一行内容。

    如果在尝试了上述方案之后,液晶屏仍然无法正常显示文件内容,那么可能存在硬件问题或者其他因素导致的bug。此时,应该逐一排查可能存在的问题,找到并解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^