Сейчас я работаю над проектом встраиваемой светодиодной измерительной системы. Он использует ARM и Linux, и имеет 64M памяти и 1G памяти. При измерении предполагается записывать данные в файл .csv. Я сделал это так:
- Создать / открыть файл до начала измерения
- В измерительном цикле, когда данные готовы, поместите их в файл и перейдите к следующему измерению
- Когда пользователь остановит измерение, файл будет закрыт
Но когда я добавляю эту функцию, программа продолжает работать несколько часов, после чего аппарат не реагирует ни на что (измерение остановлено, пользовательский интерфейс все еще отображается, но не реагирует на какие-либо действия и т. Д.). И CSV-файл составляет около 15 МБ.
Хотя без этой функции машина может хорошо работать весь день.
Я думал об этом, может быть, это потому, что память израсходована. С такой маленькой памятью возможно ли продолжать запись файла? Или я должен закрыть его каждый раз, когда я закончил писать данные? (В этом случае мне придется открывать / закрывать файл очень часто, это приведет к замедлению работы нашей системы, что не рад видеть)
Извиняюсь за мой плохой английский, может быть, кто-то может понять это и помочь мне.
Бог освещает твой путь, спасибо всем!
ps: я считаю, что сама файловая операция правильная.
код такой:
std::ofstream out_put;
out_put.open(filePath, std::ofstream::out | std::ofstream::trunc);
while(!userStoped()){
doSomeMesuring();
for(int itemIndex = 0; itemIndex < itemCount; ++itemIndex){
out_put << ',' << itemName.toStdString() << ','
<< data->mdata.item[itemIndex].mvalue << ','
<< data->mdata.item[itemIndex].judge << std::endl;
}
}
out_put.close();