0

首先让我说清楚,我已经阅读了很多关于这个问题的内容,我不想要类似的答案。

我想从我的电脑上打开一个存储在我的硬盘上的文件到 atmel 工作室。读取文件不是我的程序的一部分,但我需要读取这个文件,因为它包含示例数据。我可以手动填充程序中的数组,但这会很累。

我只需要将文件内容读取到数组中,这样我就可以测试我的算法了。我知道在 avr 上没有文件系统,读取文件没有意义,但正如我所说,读取文件不是我算法的一部分。

有什么办法可以在 Atmel Studio 6 中读取文件吗?

4

2 回答 2

1

搜索一些工具 bin2h bin2c 或 bin2hex 或类似的。将二进制数据转换为您可以包含的带有 c-uint8_t-arrays 的文件。我很确定 avr-gcc 或 winavr 确实包含这样的工具,但我不记得名字了。

于 2013-06-17T12:50:18.597 回答
1

对于其他想要解决此问题的人,这是我的解决方案。我没有使用任何工具,而是做了一个c++函数来读取文件并以数组的形式写入,这个函数是在atmel之外使用的。

    void writevectorf(const char *filename, vector<float> &myvector){
    FILE * pFile = fopen(filename,"w");
    if (pFile!=NULL){
        unsigned int size = myvector.size()-1;
        fprintf(pFile,"%s","#include <vector>\n\n");
        fprintf(pFile,"%s","float myfloats[] = {");
        for (unsigned int i=0; i<size; ++i)
            fprintf(pFile, "%0.7g, ",myvector[i]);
        fprintf(pFile, "%0.7g};\n",myvector[size]);
        fprintf(pFile, "%s = %d;\n","int datasize",myvector.size());
        fprintf(pFile, "%s %d %s","std::vector<float> input (myfloats, myfloats +",myvector.size(),");");
        fclose(pFile);
    }
    else
        cout << "Unable to open file: "  << filename << endl;
}

此函数将文件写入向量,它也写入数组,随意修改它以满足您的需要。

于 2013-06-24T08:11:45.850 回答