声音字符串声明挂起Arduino编译器

时间:2012-03-10 09:00:05

标签: c string audio arduino wav

我有一个8字符的字符串,但我正在尝试导入到我的Arduino项目中的WAV文件。我声明就像这样

const unsigned char sounddata_data[] PROGMEM = "€€[fill these brackets in with 6500 other characters]";

当我尝试运行此代码时,编译器不会给我任何错误。它只是挂起,永远不会完成编译。我知道这就是这一行,因为如果我用更短的字符串或其他类型的声明(比如在每个字符之间加上逗号)声明它,它就可以工作了。

Arduino代码中的行长限制是否会阻止我?

如果我必须接受这个并在每个角色之间加上逗号,那么有一个好方法吗?

我总是可以编写一个简单的程序来完成它,但我有很多声音文件要转换,我想让它变得简单易读。

修改

我最后只是编写程序。它将每个数据字节转换为逗号分隔的int。我仍然困扰我,旧的方式不起作用,这样需要更多的时间,但至少我有一些东西可以依靠

#include <stdio.h>
int main(int argc, char *argv[]) {
    FILE *r, *w;
    unsigned char ch;
    r = fopen(argv[1], "rb");
    w = fopen("out.txt", "w");
    while (fscanf(r, "%c", &ch) != EOF) {
        fprintf(w, "%d, ", (int)ch);
    }
    return 1;
}

1 个答案:

答案 0 :(得分:0)

如果这是一个行长问题,那么你可以分解这样的字符串:

const unsigned char sounddata_data[] PROGMEM = "€€[fill these brackets "
                                               "in with 6500 "
                                               "other chars]";