STM32_Discoverer
Пт 17 февраля 2017 г., 21:34
Привет, я пытаюсь получить целое число из массива из текстового файла на моей SD -карте? Но в старой библиотеке SD.H это было легко, как
myFile = SD.open("test.txt");
if (myFile) {
while (myFile.available() && i
victor_pv
Пт 17 февраля 2017 г., 21:49
Я думаю, что эта тема может быть связана:
https: // форум.Ардуино.CC/INDEX.PHP?Тема = 326573.0
Проблема не специфична для ядра STM, а то, как работает библиотека SDFAT.
https: // форум.Ардуино.CC/INDEX.PHP?Тема = 326573.0
Проблема не специфична для ядра STM, а то, как работает библиотека SDFAT.
STM32_Discoverer
Пт 17 февраля 2017 г. 22:10
Да, я уже видел эту ссылку, попробовал, не помог
victor_pv
Пт 17 февраля 2017 г. 11:09
STM32_Discoverer написал:Да, я уже видел эту ссылку, попробовал, не помог
STM32_Discoverer
Сб 18 февраля 2017 г. 7:37 утра
Я использую SDFAT-бета из Greiman
STM32_Discoverer
Сб 18 февраля 2017 г. 7:43 утра
Но я не вижу
#define ARDUINO_FILE_USES_STREAM 1
Пито
Сб 18 февраля 2017 г. 9:49
#include
#include "SdFat.h"
SdFat SD;
const uint8_t csPin = SS;
File file;
..
file = SD.open("stream.txt", O_RDWR|O_CREAT|O_TRUNC);
if (!file) {
Serial.println(F("open error"));
return;
}
;
..
// Rewind the file and read the number with parseInt().
file.seek(0);
int i = file.parseInt();
Serial.println(i);
file.close();
STM32_Discoverer
Сб 18 февраля 2017 г. 12:42
Странно, но этот эскиз не читает мою SD -карту
STM32_Discoverer
Сб 18 февраля 2017 г. 12:45
Это мой код
#include
#include "SdFat.h"
SdFat sd1(1);
// SdFatEX sd1(1);
const uint8_t SD1_CS = PA4; // chip select for sd1
//SdFat sd2(2);
//// SdFatEX sd2(2);
//const uint8_t SD2_CS = PB12; // chip select for sd2
#define errorExit(msg) errorHalt(F(msg))
#define initError(msg) initErrorHalt(F(msg))
unsigned long duration;
int my_array[1000];
int num;
int c;
void setup() {
Serial.begin(115200);
delay(10000);
// initialize the first card
if (!sd1.begin(SD1_CS, SD_SCK_MHZ(18))) {
sd1.initError("sd1:");
}
// initialize the second card
// if (!sd2.begin(SD2_CS, SD_SCK_MHZ(18))) {
// sd2.initError("sd2:");
// }
Serial.println(F("------sd1 root-------"));
sd1.ls();
// set the current working directory for open() to sd2
//sd1.chvol();
File file1;
if (!file1.open("data.txt", O_RDWR | O_CREAT | O_TRUNC)) {
sd1.errorExit("file1");
}
for (int x=0;x<1000;x++){
parseUInt();
Serial.println(num);
}
file1.close();
Serial.println(F("Done"));
}
void loop(){}
int parseUInt () {
int num=-1;
while (true) {
int c = file1.read();
if (c>47 && c<58) {
if (num<0) num=0;
num=num*10+c-48;
} else if (num>-1 || c==-1) return num;
}
}
STM32_Discoverer
Сб 18 февраля 2017 г. 12:50
Даже если я заменяю функцию - parseuint () на int c = file1.parseint (); - Код не работает
Пито
Сб 18 февраля 2017 г. 13:01
Что это значит, «код не работает» ??
Не пытайтесь возиться со сложными набросками, вместо этого старайтесь пошатнуться.
Попробуйте оригинальный пример (мой фрагмент кода, от SDFAT, пока он не сработает. А после этого вы можете играть с кодом.
https: // github.com/greiman/sdfat/blob/m ... rseint.Ино
Также не обращайте внимания на язык C требует некоторых правил, соблюдается. Файл1 должен быть объявлен глобальным, в противном случае он не будет виден внутри функции.
Смотрите мой фрагмент выше.
Не пытайтесь возиться со сложными набросками, вместо этого старайтесь пошатнуться.
Попробуйте оригинальный пример (мой фрагмент кода, от SDFAT, пока он не сработает. А после этого вы можете играть с кодом.
https: // github.com/greiman/sdfat/blob/m ... rseint.Ино
Также не обращайте внимания на язык C требует некоторых правил, соблюдается. Файл1 должен быть объявлен глобальным, в противном случае он не будет виден внутри функции.
Смотрите мой фрагмент выше.
victor_pv
Сб 18 февраля 2017 г. 13:48
STM32_Discoverer написал:Но я не вижу
#define ARDUINO_FILE_USES_STREAM 1