file corrupt detectie

Arduino specifieke Software
Berichten: 15
Geregistreerd: 21 Feb 2013, 21:55

file corrupt detectie

Berichtdoor logger » 01 Mrt 2013, 00:02

Hallo

Ik probeer nu elke keer een file om de 5min te openen, data schrijven, en weer te sluiten
het openen doe ik met
logFile = SD.open(fullName, O_CREAT | O_APPEND| O_WRITE);

als het goed is zoek hij het end van de file op en voegt nieuw data toe. Maar het zou kunnen dat de file corrupt wordt door een of andere rede
weet iemand hoe je kunt detecteren of een file corrupt is/niet meer bruikbaar is, of wat kan er gebeuren als een file corrupt raakt ?

Advertisement

Gebruikers-avatar
Berichten: 700
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

Re: file corrupt detectie

Berichtdoor pjh » 07 Mrt 2013, 12:28

ik heb eerlijk gezegd geen idee.
Bestaat je probleem nog? Dan moet ik er even induiken.

Berichten: 15
Geregistreerd: 21 Feb 2013, 21:55

Re: file corrupt detectie

Berichtdoor logger » 07 Mrt 2013, 23:26

pjh schreef:ik heb eerlijk gezegd geen idee.
Bestaat je probleem nog? Dan moet ik er even induiken.


tja een probleem, nee
normaal gesproken zou je altijd een file na het saven af willen sluiten, je hebt dus een window wanneer een file open staat
Maar door spannings wegval of waar door dan ook zou een file beschadigt kunnen worden . ik heb het zelf nog niet gehad, maar op forums lees ik dat meerdere mensen er wel eens last van hadden
stel als de file "corrupt" is, dit te detecteren en een nieuwe file te openen
logFile = SD.open(fullName, O_APPEND| O_WRITE); // open de bestaande file
if (!logFile) //als er geen EOF gevonden kon worden of dat de file niet te openen is logfile is dat false

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: file corrupt detectie

Berichtdoor zuid » 15 Mrt 2013, 20:32

Ik heb gisteren ook een corrupt SD file ontdekt.
Mijn sketch is heel actief met data in diverse files op de SD aan het schrijven.
Elke 15 seconden een file met huidge meetwaarden (slimme energie meter en Mastervolt XS omvormer voor zonnepanelen).
verder elk uur de meetgegevens in een file per maand en aan het eind van de dag een record per dag.
Globaal dus open write close file 1 (slimme meter) en direct daarna open write close file 2 (omvormer).
Resultaat dus elke keer één record met metingen.
(SD resultaat kan via de ethernet kaart weer uitgelezen worden met webpagina met javascript op een PC o.i.d)
Gisteren heb ik nu ontdekt dat twee files die direct na elkaar elke 15 seconden worden geschreven naar de zelfde plek op de SD verwezen. Alles heeft enkele maanden goed gewerkt.
Het probleem is ontstaan nadat ik een nieuwe software versie op de arduino had geplaatst.
Waarschijnlijk is dus het stopzetten van de Arduino precies op een moment gebeurt dat een van de files /file headers werd weggeschreven. Ik denk dat dit in het vervolg alleen voorkomen kan worden als ik er voor zorg dat voor het laden van een software update ik er eerst voor zorg dat de sketch stopt met het wegschrijven van data naar SD.
In mijn geval eenvoudig te realiseren door eerst de verbinding met de slimme meter te onderbreken en daarna pas sketch te stoppen. Naar mij idee is vooral dus het moment van afbreken van de sketch het grote gevaar voor het corrupt raken van een SD file.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 20 gasten