Arduino считывает целое число из Txt - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь прочитать свой целочисленный текстовый файл с SD-карты.

В моем тексте есть эти 2 строки (первая строка - 1, вторая - \ n);

1

Я сделал код читателя вроде не работает;

#include <SD.h>
#include <SPI.h>
File myFile;
int pinCS = 53; // Pin 10 on Arduino Uno
int total = 3;
void setup() {
    
  Serial.begin(9600);
  pinMode(pinCS, OUTPUT);
  
  // SD Card Initialization
  if (SD.begin())
  {
    Serial.println("SD card is ready to use.");
  } else
  {
    Serial.println("SD card initialization failed");
    return;
  }
  // Reading the file
  myFile = SD.open("test.txt", FILE_READ);
  if (myFile) {
    Serial.println("Read:");
    // Reading the whole file
    while (myFile.available()) {
      total += myFile.read();
      Serial.write(total);
   }
    myFile.close();
  }
  else {
    Serial.println("error opening test.txt");
  }
  
}
void loop() {
  // empty
}

Что мне не хватает? Можете ли вы исправить мой код?

1 Ответ

0 голосов
/ 09 июля 2020

read() считывает один символ, поэтому вам нужно преобразовать последовательности символов в целочисленные значения.

    while (myFile.available()) {
      total += myFile.read();
      Serial.write(total);
   }

должно быть

    int current = 0;
    while (myFile.available()) {
      int c = myFile.read();
      if ('0' <= c && c <= '9') {
        current = current * 10 + (c - '0');
      } else if (c == '\n') {
        total += current;
        current = 0;
        Serial.write(total);
      }
    }
...