Arduino将SD文件名作为字符串打开

Wij*_*els 5 c++ file-io arduino

我试图打开一个文件,我将名称计算成一个字符串.但是,它只是给我编译错误,如图所示.

for(int i=1;;i++)
{
   String temp = "data";
   temp.concat(i);
   temp.concat(".csv");
   if(!SD.exists(temp))//no matching function for call to sdclass::exists(String&)
   {
      datur = SD.open(temp,FILE_WRITE);
   }
}
Run Code Online (Sandbox Code Playgroud)

我是一个java人,所以我不明白为什么这不起作用.我尝试了一些字符串对象方法,但似乎没有工作.我在arduino编程方面有点新,但我更了解java.这个for循环的要点是每次arduino重新启动时创建一个新文件.

iag*_*een 11

SD.open期望一个字符数组而不是一个String,你需要首先使用该toCharArray方法转换它.尝试

  char filename[temp.length()+1];
  temp.toCharArray(filename, sizeof(filename));
  if(!SD.exists(filename)) { 
   ...
  }
Run Code Online (Sandbox Code Playgroud)

完成代码:

for(int i=1;;i++)
{
   String temp = "data";
   temp.concat(i);
   temp.concat(".csv");
   char filename[temp.length()+1];
   temp.toCharArray(filename, sizeof(filename));
   if(!SD.exists(filename))
   {
      datur = SD.open(filename,FILE_WRITE);
      break;
   }
}
Run Code Online (Sandbox Code Playgroud)

你会发现许多函数采用char数组而不是字符串.