文件在Atmel工作室

Files in Atmel Studio

本文关键字:工作室 Atmel 文件      更新时间:2023-10-16

首先让我澄清一下,我读了很多关于这个问题的文章,我不想要类似的答案。

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

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

在Atmel Studio 6中是否有任何工作可以读取文件?

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

对于任何想要解决这个问题的人,这是我的解决方案。我没有使用任何工具,而是编写了一个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>nn");
        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;
}

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