Zahlen aus SD-Karte lesen und in einer Variable als Restlaufzeit speichern

Hallo zusammen,

ich bin Kfz-Mechatroniker und übe mich neuerdings als Neuling im Arduino programmieren. Wir haben zur Zeit ein Projekt in der Arbeit und möchte mich mit Einbringen.
Der folgender Sketch liest die erste Zeile der SD-Karte ein, was immer Zahlen sind (Restlaufzeit in ms) und soll nun diese als Variable abspeichern, damit ich an einem späteren Zeitpunkt die Restlaufzeit starten kann. Die Zeit kann dabei aber auch mehrere Stunden sein.
Abgespeichert ist sie so in "stringBuffer", nur richtig? Es werden mir über das Serial (später Lcd) die korrekten Daten von 2885 angezeigt.
Wie kann ich "stringBuffer" als "long" verwenden?
Hab schon sehr viel gesucht, aber ich komme nicht weiter. Vielleicht mit "atoi" oder "ptr" ?

Vielen Dank im Voraus für die Hilfe.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <mcp_can.h>
#include <mcp_can_dfs.h>
#include <SPI.h>
#include <SdFat.h>

SdFat SD;
const int SERIAL_BAUDRATE           = 19200;
const int SPI_CS_SD  = 4;
const int STRING_BUFFER_SIZE = 15;
char stringBuffer[STRING_BUFFER_SIZE];
int i = 1;

SdFile file;

bool readLineFromSD(const char* filename, char* buffer, int bufferSize, int line)
{
  if (SD.begin())
  {
    if (file.open(filename, O_READ))
    {
      int count = 1;
      while (file.fgets(buffer, bufferSize) > 0)
      {
        if (count == line)
          break;
        count++;
      }
      file.close();

      if (count != line)
        return false;

      return true;
    }
  }

  return false;
}


void setup() {
  Serial.begin(SERIAL_BAUDRATE);
  readLineFromSD("Data_01.txt", stringBuffer, sizeof(stringBuffer), i);
  Serial.println(stringBuffer);

}

void loop() {}

Möglicherweise suchst Du sowas wie atoi und verwandte: http://www.cplusplus.com/reference/cstdlib/

(deleted)

Vielen Dank für die links, haben mir schon weitergeholfen.
Wie es scheint sollte ich mit "strtol" (Convert string to long integer) weiterarbeiten, bzw. mich weiterbeschäftigen.
Nur noch herausfinden wie ich das am besten schreibe, vielleicht hat jemand eine Idee?

Danke & Grüße Spliffus

Wenn Du auf den kleinen Arduinos arbeitest, ist die Vervendung der Klasse String nicht unbedingt eine gute Idee. Besser kommst Du, wenn Du in char-Arrays (C-strings) einliest und mit atoi/atol umwandelst.
Hier habe ich mal ein paar Infos zur Arbeit mit Zeichenketten zusammen gestellt.

Gruß Tommy

Ich denke das ich folgendes brauche um weiterzukommen:

unsigned long strtoul( const char *str, char **str_end, int base );

kann mir eventuell jemand an einem Beispielcode weiterhelfen, oder mir erklären wie ich das in meinem sketch oben einbinden kann, wäre sehr Hilfreich.

Danke

Spliffus:
... Beispielcode ...

const int SERIAL_BAUDRATE = 19200;
const int STRING_BUFFER_SIZE = 15;
char stringBuffer[STRING_BUFFER_SIZE] = "2885";

void setup() {
  Serial.begin(SERIAL_BAUDRATE);
  Serial.println(stringBuffer);
  unsigned long wert = strtoul( stringBuffer, NULL, 0 );
  Serial.println(wert);
}

void loop() {}

Danke dafür. Mit currentMillis hab ich nun eine Loop-Laufzeit von 28sek. Woweit sogut. Hab aber noch folgendes Problem:
Ich kann/darf die Zeit von "2885" ms nicht im "char stringBuffer" vorgeben, da ich sie mir aus der SD karte holen muss. Es gibt verschiedene vorgegebene Laufzeiten, die auf SD-Karten gespeichert sind, die auch mehrere Stunden sein können. Am Ende hab ich das so geplant das dass wie eine Stopuhr aussieht die rückwärts läuft.
Außerdem weiß ich noch nicht wie ich millis(); bei 0 beende. Im Serial läuft nun die Zeit von 2885ms ab hört aber bei "0" nicht auf. Kann mir jemand da weiterhelfen?
Vielen Dank.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <mcp_can.h>
#include <mcp_can_dfs.h>
#include <SPI.h>
#include <SdFat.h>

SdFat SD;

const int SERIAL_BAUDRATE = 19200;
const int STRING_BUFFER_SIZE = 15;
char stringBuffer[STRING_BUFFER_SIZE] = "2885";
const int SPI_CS_SD  = 4;
unsigned long wert;
unsigned long currentMillis=0;
unsigned long Stop=0;


void setup() {
  Serial.begin(SERIAL_BAUDRATE);
  Serial.println(stringBuffer);
   wert = strtoul( stringBuffer, NULL, 0 );
  
  Serial.println(wert);
  
}

void loop() {
currentMillis = millis();
Serial.println (wert-currentMillis/10);
}