Arduino打开SD文件名为字符串

Arduino opening SD filename as string

本文关键字:字符串 文件名 SD 打开 Arduino      更新时间:2023-10-16

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

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);
   }
}

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

SD.open期望字符数组而不是String,您需要首先使用toCharArray方法转换它。试着

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

完成代码:

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;
   }
}

您将发现许多函数接受字符数组而不是字符串。