关闭 pizero 打开了这个问题 2014 年 4 月 1 日 · 4条评论 关闭 尝试打印“/a/b/job.g”时,文件夹 b 无法打开。#865 pizero 打开了这个问题 2014 年 4 月 1 日 · 4条评论 评论 皮泽罗 评论了 2014 年 4 月 1 日 尝试打印“/a/b/job.g”时,文件夹 b 无法打开。 CardReader::openFile fails if folder depth is greater than 1 错误发生在 cardreader.cpp line 312: In line if(!myDir.open(curDir,subdirname,O_READ)) myDir 在第二次通过时已经打开 – 因为它用于打开第一个文件夹 a – 因此无法为第二个文件夹 b 重新打开。要解决此问题,必须关闭 myDir。但是,这也会关闭 curDir,它需要作为下一个要打开的文件夹的父级。所采取的方法被打破了。 要解决此问题,可以使用使用两个 SdFile 并在它们之间切换的模式,就像在 SdFile::open 中所做的那样。 作者 皮泽罗 评论了 2014 年 4 月 1 日 我从第 292 行开始对 CardReader::openFile 进行了如下更改 SdFile dir1,dir2; SdFile* tmpDir=&dir1; curDir=&root; char *fname=name; char *dirname_start,*dirname_end; if(name[0]=='/') { dirname_start=strchr(name,'/')+1; while(dirname_start>0) { dirname_end=strchr(dirname_start,'/'); //SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start-name)); //SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end-name)); if(dirname_end>0 && dirname_end>dirname_start) { char subdirname[13]; strncpy(subdirname, dirname_start, dirname_end-dirname_start); subdirname[dirname_end-dirname_start]=0; if(tmpDir->isOpen()) tmpDir->close(); if(tmpDir->open(curDir,subdirname,O_READ)) { curDir=tmpDir; tmpDir=tmpDir==&dir1?&dir2:&dir1; dirname_start=dirname_end+1; } else { SERIAL_PROTOCOLPGM(MSG_SD_OPEN_FILE_FAIL); SERIAL_PROTOCOL(subdirname); SERIAL_PROTOCOLLNPGM(""); return; } } else // the reminder after all /fsa/fdsa/ is the filename { fname=dirname_start; //SERIAL_ECHOLN("remainder"); //SERIAL_ECHOLN(fname); break; } } } else //relative path { curDir=&workDir; } 似乎对我有用。 pizero已完成 关闭 2014 年 4 月 1 日 喜欢 (0) 无法存储探头偏移 #136 无法访问此网站#137 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭 无法在 gsender 1.2.0 中打开 .gcode 文件 #367 RaspberryPi 运行 gsender 时出现问题 #89 向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭无法在 gsender 1.2.0 中打开 .gcode 文件 #367RaspberryPi 运行 gsender 时出现问题 #89向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473功能请求:抑制发送到机器的 gcode 中的 gcode 注释。 #444 关闭通过网络连接进行连接 #171操纵杆运动的剩余问题 #204 关闭新版本认为我的机器一直处于锁定状态 #474 关闭
尝试打印“/a/b/job.g”时,文件夹 b 无法打开。
CardReader::openFile fails if folder depth is greater than 1
错误发生在 cardreader.cpp line 312:
In line
myDir 在第二次通过时已经打开 – 因为它用于打开第一个文件夹 a – 因此无法为第二个文件夹 b 重新打开。要解决此问题,必须关闭 myDir。但是,这也会关闭 curDir,它需要作为下一个要打开的文件夹的父级。所采取的方法被打破了。
要解决此问题,可以使用使用两个 SdFile 并在它们之间切换的模式,就像在 SdFile::open 中所做的那样。