首先让我说清楚,我已经读了很多关于这个问题的文章,我不想要类似的答案。
我想将存储在硬盘上的文件从pc打开到atmel studio中。读取文件不是我的程序的一部分,但是我需要读取这个文件,因为它包含示例数据。我可以在我的程序中手动填充数组,但这会使人精疲力竭。
我只需要将文件内容读到数组中,这样我就可以测试我的算法。我知道在avr上没有文件系统,读取文件没有任何意义,但正如我所说的,读取文件不是我算法的一部分。
在Atmel Studio 6中是否有读取文件的方法?
发布于 2013-06-24 16:11:46
对于任何想要解决这个问题的人来说,这是我的解决方案。我没有使用任何工具,而是创建了一个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-17 20:50:19
搜索bin2c或bin2hex或类似的工具。将二进制数据转换为包含c-uint8_t数组的文件。我很确定avr--gcc或者winavr确实包含这样一个工具,但是我记不住它的名字了。
https://stackoverflow.com/questions/17147033
复制相似问题