照例,
https://randomnerdtutorials.com/esp32-microsd-card-arduino
老外写的很详细的帖子 ,读取sd卡。很详细,琢磨一下就弄懂了,全文完。
哎呀,这个microByte 玩了有段时间了。怎么也要把读取sd卡,显示图片,和连上网搞起来呀……
我就一一利用现成的例程程序搭建好图片显示代码。
在使用sd卡读取文件的时候,串口总是提示 sd卡初始化成功,但是读取文件失败,找不到文件。岂有此理。提示,不是fat/fat32 格式问题 ,也不是esp32 接口问题(这个问题卡了两天)
我是怎么发现的呢!第一,使用esp32 例程SD_Test 运行起来显示 sd卡空间大小 使用情况。这就是说程序运行正确
第二,读了老外的帖子。又运行一下
特意在代码里添加读取test.txt
listDir(SD, “/”, 0);
createDir(SD, “/mydir”);
listDir(SD, “/”, 0);
removeDir(SD, “/mydir”);
listDir(SD, “/”, 2);
writeFile(SD, “/hello.txt”, "Hello ");
appendFile(SD, “/hello.txt”, “World!\n”);
readFile(SD, “/hello.txt”);
readFile(SD,”test.txt”);//←就是这一行
deleteFile(SD, “/foo.txt”);
renameFile(SD, “/hello.txt”, “/foo.txt”);
readFile(SD, “/foo.txt”);
testFileIO(SD, “/test.txt”);
Serial.printf(“Total space: %lluMB\n”, SD.totalBytes() / (1024 * 1024));
Serial.printf(“Used space: %lluMB\n”, SD.usedBytes() / (1024 * 1024));
这个运行就提示test.txt读取失败,为啥,明明就有test.txt 这个文件,单独这文件没读出来。
再回看,它们的代码都有斜杠**/**/hello.txt,/foo.txt
这简直是对我的电脑基础的打击,原来文件名包含在路径里,或者说路径也是文件名的一部分。此外,我第一次向电脑老师发问,也是问,可以直接打路径读取文件,老师的回答是肯定的。c:\dos\xcopy d:*.* c:\kzzk//例子,不要问在干什么。
好吧,事实就是这样。我在拼凑好的读取图片的代码上加上斜杠
File jpgFile = SD.open(“/arduino.jpg”,FILE_READ);//记得加斜杠,青年
总结,编程总是要细心到一个空格。这些常识问题没人会告诉你的,边界问题,透明度0,显卡兼容性……
好吧,总算明白如何读文件了。