我有一个来自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;
}

最佳答案

如果是行长问题,则可以像这样拆分字符串:

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

关于c - 声音字符串声明挂起Arduino编译器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9645169/

10-11 15:30
查看更多