/* * Append Example * * This program shows how to use open for append. * The program will append 100 line each time it opens the file. * The program will open and close the file 100 times. */ #include #include "SdFat.h" #include "sdios.h" // SD chip select pin const uint8_t chipSelect = SS; // file system object SdFat sd; // create Serial stream ArduinoOutStream cout(Serial); // store error strings in flash to save RAM #define error(s) sd.errorHalt(F(s)) //------------------------------------------------------------------------------ void setup() { // filename for this example char name[] = "append.txt"; Serial.begin(9600); // Wait for USB Serial while (!Serial) { SysCall::yield(); } // F() stores strings in flash to save RAM cout << endl << F("Type any character to start\n"); while (!Serial.available()) { SysCall::yield(); } // Initialize at the highest speed supported by the board that is // not over 50 MHz. Try a lower speed if SPI errors occur. if (!sd.begin(chipSelect, SD_SCK_MHZ(50))) { sd.initErrorHalt(); } cout << F("Appending to: ") << name; for (uint8_t i = 0; i < 100; i++) { // open stream for append ofstream sdout(name, ios::out | ios::app); if (!sdout) { error("open failed"); } // append 100 lines to the file for (uint8_t j = 0; j < 100; j++) { // use int() so byte will print as decimal number sdout << "line " << int(j) << " of pass " << int(i); sdout << " millis = " << millis() << endl; } // close the stream sdout.close(); if (!sdout) { error("append data failed"); } // output progress indicator if (i % 25 == 0) { cout << endl; } cout << '.'; } cout << endl << "Done" << endl; } //------------------------------------------------------------------------------ void loop() {}