| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | /* * 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 <SPI.h>#include "SdFat.h"// SD chip select pinconst uint8_t chipSelect = SS;// file system objectSdFat sd;// create Serial streamArduinoOutStream 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() {}
 |