void MP3Player::PlayTrack(const char* dirName,int track_no,const char* track_name) { if(!PLAY) { finishSearch = false; int count=0; //if(track_no>0) //counter = track_no; if(!isPlayAll) { char temp[20]; isPlayAll = true; sd.chdir();delayMicroseconds(100000); sd.chdir(dirName,true); sd.vwd()->rewind(); sd.vwd()->getName(temp,20); currentDir = temp; counter = 0; } while(true) { if(myFile.openNext(myFile.cwd(), O_READ)) { char FileName[80]; myFile.getName(FileName,80); #if DEBUG //myFile.printName(&Serial); Serial.print(FileName); if (myFile.isDir()) { // Indicate a directory. Serial.write('/'); } Serial.println(); #endif if (!(myFile.isDir()||(String(FileName).indexOf(".mp3")==-1&&String(FileName).indexOf(".MP3")==-1))) { counter++; if(ls_flag) { Serial.print(counter); Serial.print(". "); Serial.print(FileName); Serial.print(" "); Serial.print(myFile.fileSize()); Serial.println(" bytes"); myFile.close(); continue; } //Play(FileName); if(!String(track_name).equals("")) { //counter++; if(String(track_name).equals(FileName)) { Play(FileName); //name = track_name; isPlayAll = false; break; } } else if(track_no==0) { //counter++; Play(FileName); break; } else if(track_no>0) { count++; if(count==track_no) { counter = track_no; Play(FileName); isPlayAll = false; break; } } } } else { isPlayAll = false; finishSearch = true; ls_flag = false; break; } //myFile.getFilename(FileName); myFile.close(); } } }