Сначала позвольте мне прояснить это, я много читал об этой проблеме, и я не хочу подобных ответов.
Я хочу открыть файл с моего компьютера, хранящийся на моем жестком диске, в Atmel Studio. Чтение файлов не является частью моей программы, но мне нужно прочитать этот файл, потому что он содержит примеры данных. Я могу заполнить массивы в моей программе вручную, но это было бы утомительно.
Мне нужно только прочитать содержимое файла в массив, чтобы я мог проверить свой алгоритм. Я знаю, что на 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>\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;
}
эта функция записывает файл в вектор, а также записывает в массив, не стесняйтесь изменять его в соответствии с вашими потребностями.