Логгер данных на sd карту (gps логгер)
- Войдите на сайт для отправки комментариев
Пнд, 26/12/2016 - 18:28
Собственно есть код gps логгера на NEO 6MV. Данные записывает при включении на sd карту. Создается файл LOG.GPS и все что приходит в виртуальный serial записывается на карту. Если этот файл уже есть, дописывается в него.
Как сдедать так, что при каждом включении будет создаваться новый файл (LOG1.GPS ; LOG2.GPS и т.д)?
#include <SoftwareSerial.h> #include <SD.h> SoftwareSerial mySerial(2, 3); //сюда gps модуль File GPS; char buf[128]; byte bufSize; bool waiting = true; void setup() { delay(800); pinMode(4, OUTPUT); while (!SD.begin()) { digitalWrite(4,HIGH); delay(100); digitalWrite(4,LOW); delay(100); digitalWrite(4,HIGH); delay(100); digitalWrite(4,LOW); delay(300); } GPS = SD.open("LOG.GPS", FILE_WRITE); if (!GPS) while (true) { digitalWrite(4,HIGH); delay(100); digitalWrite(4,LOW); delay(100); digitalWrite(4,HIGH); delay(100); digitalWrite(4,LOW); delay(300); } mySerial.begin(38400); // скорость GPS порта Serial.begin(57600); //скорость порта digitalWrite(4,HIGH); } void loop() { digitalWrite(4,LOW); while (mySerial.available()) { bufSize = mySerial.readBytesUntil('\n', buf, 128); if (waiting) { if (bufSize > 70) { waiting = false; GPS.write(buf, bufSize); Serial.println(buf); } } else if (bufSize > 0) GPS.write(buf, bufSize); Serial.println(buf); digitalWrite(4,HIGH); } GPS.flush(); }
Писать номер файла в ЭСППЗУ, при включении считывать номер, инкрементировать и создавать новый файл, куда и писать лог. Сохранить в ЭСППЗУ текущий номер файла.
Ну что за бред ? А чистую карту вставили ?
Не изящней ли, в цикле выполнить SD.exists("LOGxx.GPS")? где хх число от 0 до (сколько хватит фантазии), главгное не переборщить.
если файла нет, создаем его и пишем в него, есть один косяк, если есть файлы LOG0.GPS-LOG3.GPS и LOG5.GPS-LOG9.GPS
при таком подходе начнем писать в файл LOG4.GPS
Предлагаю вам не так резко высказывать своё мнение. Мой метод не претендует на 100% надёжность и помехозащищённость, но ТС не указывал, что карты будут меняться...а так можно дойти и до учитывания влияния ветра на Марсе...нет предела совершенству.
Мой метод, в условиях ограниченной защищённости, займёт меньше памяти и выполнится быстрее. Нет перебора десятков (а возможно десятков тысяч) файлов-с.
Да, ладно, не обижайтесь.
Еще идея:
В сетапе дожидаемся GPS потока, выдергиваем из него дату и время, упаковываем их в DWORD и создаем файл с уникальным именем. будет что то типа "013E55AF.LOG".
Не вижу, чем ваш метод отличается от предложенного в #2.