Communicating With a SD Card - "delete" Content From Text File? [Solved]

H’okay, so this seems to be doing the trick!

#include "application.h"
#include "sd-card-library.h"

// SOFTWARE SPI pin configuration - modify as required
// The default pins are the same as HARDWARE SPI
const uint8_t chipSelect = A2;    // Also used for HARDWARE SPI setup
const uint8_t mosiPin = A5;
const uint8_t misoPin = A4;
const uint8_t clockPin = A3;

unsigned long tail = 0;
unsigned long nextTail = 0;
unsigned long head = 0;

SdFile root;
Sd2Card card;
SdVolume volume;
SdFile file;
File myFile;

SYSTEM_MODE(SEMI_AUTOMATIC);

void setup()
{
  Serial.begin(115200);
  while (!Serial.available()) SPARK_WLAN_Loop();
  Serial.print("Initializing SD card...");
  // Initialize SOFTWARE SPI
  if (!card.init(mosiPin, misoPin, clockPin, chipSelect))
  {
    Serial.println("initialization failed! 1");
    return;
  }
  if (!SD.begin(mosiPin, misoPin, clockPin, chipSelect))
  {
    Serial.println("initialization failed! 2");
    return;
  }
  if (!volume.init(card))
  {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }
  Serial.println("initialization done.");
}

void loop()
{
  if (Time.second()%30 == 0)
  {
    root.openRoot(volume);
    root.ls(LS_R | LS_DATE | LS_SIZE);
    Serial.println();
    myFile = SD.open("delete.txt", O_RDWR);
    head = myFile.position();
    myFile.write("testing 1, delete.\r\n");
    myFile.write("testing 2, delete.\r\n");
    myFile.write("testing 3, delete.\r\n");
    myFile.write("testing 4, delete.\r\n");
    myFile.seek(tail);
    int r = random(10);   // simulate succesful transmission
    if(r%2 == 0)
    {
      Serial.println("Succesful Tranmission");
      while(myFile.available())
      {
          while(myFile.available())
          {
            char T = myFile.peek();
            if (T == '\n')
            {
              // Make String, to be able to send
              break;
            }
            myFile.read();
          }
          tail = myFile.position();
          if (tail == head)
          {
            myFile.close();
            file.open(root, "delete.txt");
            file.truncate(0);
            file.close();
            root.ls(LS_R | LS_DATE | LS_SIZE);
          }
      }
    }
    Serial.println("Unsuccesful Tranmission");
    myFile.close();
    root.close();
  }
}
2 Likes