Люди добрые помогите.

Werm
Offline
Зарегистрирован: 25.03.2014

Люди добрые помогите. Нужна помощь по SD модулью.

Все прекрасно записывается на флешку и считывается. Но понадабилось мне использавать флешку для хранения ключа.  Я знаю что можно тупа вписать переменную.

int key = "lalalalalala";

и на этом закончить. но мне нужно сравнить в if эти слава 

а код 

   myFile.read() выводит только 1 символ =(

не уж то нет библеотеки что бы из файла сразу всю строку вывести?

 

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Werm пишет:

Люди добрые помогите. Нужна помощь по SD модулью.

Все прекрасно записывается на флешку и считывается. Но понадабилось мне использавать флешку для хранения ключа.  Я знаю что можно тупа вписать переменную.

int key = "lalalalalala";

и на этом закончить. но мне нужно сравнить в if эти слава 

а код 

   myFile.read() выводит только 1 символ =(

не уж то нет библеотеки что бы из файла сразу всю строку вывести?

 

Так сделать нельзя, нельзя запихивать строку в переменную типа int, для этого существуют переменные типа String, char[] и char* (выбрать нужное по вкусу). Для сравнения строк в C есть замечательная функция strcmp и strncmp. Как ей пользоваться расскажет гугл или man strcmp.

По поводу, как с SD прочитать\записать строку есть куча замечательных статей, спросите у Гугла. Если лень, то вот одна: https://www.arduino.cc/en/Tutorial/ReadWrite

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Вы документацию читать пробовали?

*Пошел выписывать рецепт.

Werm
Offline
Зарегистрирован: 25.03.2014

ну ... да неправильно указал вид данных... int key = "12345"; так наверное лучше =)

Вы не поняли моего вопроса =) 

Werm
Offline
Зарегистрирован: 25.03.2014

JollyBiber пишет:

Вы документацию читать пробовали?

*Пошел выписывать рецепт.

так выпиши ... если вам написать нечего ... зачем пишите?

Werm
Offline
Зарегистрирован: 25.03.2014

SD class:

-> begin(CS) — инициализирует библиотеку. chipSelect по умолчанию является 10 пин и он обязательно должен быть задан как выход, иначе библиотека не будет работать;



-> exists(filename) — проверяет существование файла или каталога;



-> mkdir() — создание каталога (замечу, что исключительно каталога )



-> open() — открывает файл на карте для записи. Возможен вариант SD.open(filepath, mode)- где mode FILE_READ запись с начала или FILE_WRITE -чтение и запись, начиная с конца файла;



-> remove() — удаление файл;



-> rmdir() — удаление каталога;



все эти функции возвращают false если не функция выполнилась или true если выполнилась.



File class:

-> available() — проверка, есть ли доступные байты для записи. Возвращает их количество;



-> close() — закрытие файла;



-> flush() — сохранение файла;



-> peek() — считывание байта из файла без продвижения к следующему;



-> position() — получение позиции, куда будет записываться или читаться файл;



-> print() — запись в файл данных. возможен такой вариант: file.print(data, BASE) — где BASE в какой системе исчислений писать;



-> println() — запись в фал с переносом каретки;



-> seek() — проверка существования положения в файле;



-> size() — получение размера файла в байтах;



-> read() — возвращение бит из файла с переходом к следующему;



-> write() или write(data,buf) — запись данных в файл;

 

==========================

В этой библеотеки нету функции вывода всей строки без цикла//  Мне нужно вывести строку из файла и назначить для нее переменную. 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Рецепт: RTFM

Подпись: неразборчива.

Werm
Offline
Зарегистрирован: 25.03.2014

хрень ... нету там нечего про это в инструкции... в какой инструкции =) !?

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

В инструкции к оператору while

Radjah
Offline
Зарегистрирован: 06.08.2014

JollyBiber пишет:

Рецепт: RTFM

Подпись: неразборчива.

А диагноз?

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Radjah пишет:

JollyBiber пишет:

Рецепт: RTFM

Подпись: неразборчива.

А диагноз?

Клятва Гиппократа не позволяет.

Werm
Offline
Зарегистрирован: 25.03.2014
    while (myFile.available()) {
    	Serial.write(myFile.read());
    }

как это можно засунуть в переменную? что за чванство .... я же написал в самой первой записи ... что read() по битно!!! понятно что через цикл пропускаешь эту функцию... но мне компилятор ... не даст такой фигней заниматся... в СИ есть понятные функции в PHP лекго напишу... 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Да уж, поистине неразрешимая задача - "как присвоить значение переменной".

История их фидонета:

Я тут файл скачал, а он мне не нужен больше. Как его обратно закачать?

Werm
Offline
Зарегистрирован: 25.03.2014

ну попробуй реши... болтать все могут 

#include <SD.h>

File myFile;
char Str5[8] = "test";

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD card...");  
  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  
}

void loop()
{
  myFile = SD.open("key.txt");

  if (myFile) {
    while (myFile.available()) {
    	Serial.write(myFile.read());
    }
    Serial.println("");
    myFile.close();
    
    
    if (Str5[8] == что тут написать ? как вывести слово из файла? в файле тоже написано test . )  Serial.println("OK");  else Serial.println("XPEH");
    
        delay(5000);
  } else {
    Serial.println("error opening test.txt");
  }
}

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Гыыыы :)

Меня на "слабо" даже в детстве не брали :)

Позволю себе усомниться в Ваших познаниях в С и РНР ;)

Вы не понимаете как работает Ваш скрипт и что он делает.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

JollyBiber пишет:

Гыыыы :)

Меня на "слабо" даже в детстве не брали :)

Позволю себе усомниться в Ваших познаниях в С и РНР ;)

Вы не понимаете как работает Ваш скрипт и что он делает.

 Так помогите человеку, а Вы Гыыыы:) 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

sandr4 пишет:

 Так помогите человеку, а Вы Гыыыы:) 

А что "ищу исполнителя" закрыли?