首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >arduino UNO PROGMEM中的字符串连接

arduino UNO PROGMEM中的字符串连接
EN

Stack Overflow用户
提问于 2015-05-11 01:32:30
回答 1查看 993关注 0票数 0

我正在尝试创建一个波文件名的列表,soundList通过一个adafruit盾牌在arduino UNO上播放。由于这些文件名永远不会更改,而且我的sRam即将用完,所以我想将它们存储在PROGMEM中,但是我得到了一个错误:

代码语言:javascript
复制
invalid operands of types 'const char*' and 'const char [5]' 
to binary 'operator+'

我不能连接PROGMEM中的字符串吗?我不明白为什么。

代码语言:javascript
复制
for (int i = 1; i < 19; ++i)
  {
    const char soundList[i] PROGMEM = "Track" + i + ".WAV";
    return soundList;
  }

另外,我很难读到soundList中的波形文件吗?

代码语言:javascript
复制
pgm_read_word(&(soundList[i])));

有智慧的话吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-11 04:02:34

for循环是一个运行时操作。您不能执行分配给PROGMEM变量的运行时操作,因为该变量将存储在(运行时为只读)闪存中。

但是,由于唯一的可变部分是数字,所以将其他两个部分存储在flash中,并在运行时创建文件名。

代码语言:javascript
复制
#define FILEPREFIXLEN 5
char fileprefix[] PROGMEM = "Track";
#define FILESUFFIXLEN 4
char filesuffix[] PROGMEM = ".WAV";
#define FILEMIDLEN 2

 ...

char filename[FILEPREFIXLEN + FILEMIDLEN + FILESUFFIXLEN + 1];
// Read fileprefix into filename, append number, append filesuffix
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30158480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档