Question

First let me make this clear, I have read alot about this issue and i dont want similar answers.

I want to open a file from my pc stored on my HDD into atmel studio. Reading files is not part of my program, but I need to read this file because it contains example data. I can fill the arrays in my program manually but that would be exhausting.

I only need to read the file contents to the array, so that I can test my algorithm. I know on avr there is no filesystem and reading files makes no sense, but as I said reading files is not part of my algorithm.

Is there any work around to read files in Atmel Studio 6?

Was it helpful?

Solution 2

For anyone else who wants a solution to this, here is my solution. I didnt use any tool, instead I made a c++ function to read a file and write it in the form of an array, this function is to be used outside 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;
}

this function writes the file to a vector, it also writes to an array, feel free to modify it to suit your needs.

OTHER TIPS

search for some tools bin2h bin2c or bin2hex or similar. that convert binary data to files with c-uint8_t-arrays that you can include. Iam quite sure that the avr-gcc or winavr does include such a tool but i cannot remember the name.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top