Логгер данных на 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.