SD модуль

Тема в разделе "Arduino & Shields", создана пользователем filay23, 19 апр 2015.

  1. filay23

    filay23 Нерд

    Скажите функция initEncoder это моя функция с алгоритмом шифрования??
    Правильно ли я поняла, что в переменной х будет хранится символ считанный из файла?
     
    Последнее редактирование: 20 апр 2015
  2. filay23

    filay23 Нерд

    #include <SD.h>

    void setup()
    {
    Serial.begin(9600);
    Serial.print("Initializing SD card...");
    // Магия. Этот вывод должен быть настроен как выход.
    // Иначе, некоторые функции могут не работать.
    pinMode(10, OUTPUT);
    // processFile(src_name,dst_name);

    void initEncoder()
    {
    }
    //File dst_file;
    byte encodeByte(byte x)
    {
    byte y = x;
    return y;
    }
    bool processFile(char *src_name, char *dst_name)
    {
    bool result = false;
    File src_file = SD.open("src_name.txt", FILE_READ);
    if (src_file)
    {
    File dst_file = SD.open("dst_name.txt", FILE_WRITE);
    if (dst_file)
    {
    initEncoder();
    while (src_file.available())
    {
    byte x = src_file.read();
    byte y = encodeByte(x);
    dst_file.write(y);
    }
    dst_file.close();
    result = true;
    }
    src_file.close();
    }
    return result;
    }
    }

    void loop()
    {
    // nothing happens after setup
    }

    Выдает ошибку sketch_apr22a:26: error: a function-definition is not allowed here before '{' token
     
  3. Unixon

    Unixon Оракул Модератор

    Если у вас есть какая-то процедура подготовки алгоритма шифрования к работе, она должна вызываться в этом месте.

    Да.
     
  4. Unixon

    Unixon Оракул Модератор

    Код (Text):

    #include <SD.h>

    void initEncoder()
    {
    // Подготовить шифратор к работе, если это нужно.
    }

    byte encodeByte(byte x)
    {
    byte y = x; // Вместо этого написать реальный алгоритм преобразования.
    return y;
    }

    bool processFile(char *src_name, char *dst_name)
    {
    bool result = false;
    File src_file = SD.open(src_name, FILE_READ);
    if (src_file)
    {
      File dst_file = SD.open(dst_name, FILE_WRITE);
      if (dst_file)
      {
      initEncoder();
      while (src_file.available())
      {
      byte x = src_file.read();
      byte y = encodeByte(x);
      dst_file.write(y);
      }
      dst_file.close();
      result = true;
      }
      src_file.close();
    }
    return result;
    }

    void setup()
    {
    Serial.begin(9600);
    Serial.print("Initializing SD card...");
    // Магия. Этот вывод должен быть настроен как выход.
    // Иначе, некоторые функции могут не работать.
    pinMode(10, OUTPUT); // Это не магия, а включение сигнала выборки (SS) интерфейса SPI, через который идет общение с SD картой.
    processFile("origin.txt","cypher.txt");
    }

    void loop()
    {
        // nothing happens after setup
    }
     
     
  5. filay23

    filay23 Нерд

    Спасибо Вам огромное за помощь !!!
     
  6. filay23

    filay23 Нерд

    /*
    * SD карта подключается так:
    ** MOSI - пин 11
    ** MISO - пин 12
    ** CLK - пин 13
    ** CS - пин 4
    */
    #include <iostream>
    #include <stdio.h>
    #include <string>
    #include <limits.h>
    #include <iostream>
    #include <string.h>
    #include <SD.h>

    char SLOVO[]="";
    char SLOVO_GAMMA[]="";
    File fileWrite;
    File fileReadSlovo;
    File fileReadGamma;

    void setup()
    {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    /// Serial.print("Initializing SD card...");
    // Магия. Этот вывод должен быть настроен как выход.
    // Иначе, некоторые функции могут не работать.
    pinMode(4, OUTPUT);
    if (!SD.begin(4))
    {
    Serial.println("initialization failed!");
    return;
    }
    Serial.println("initialization done.");
    //===============================
    fileReadSlovo = SD.open("TEXT.txt");
    if (fileReadSlovo)
    {
    int i=0;
    while (fileReadSlovo.available())
    {
    char c = fileReadSlovo.read();
    SLOVO[i++] = c;
    Serial.print(SLOVO[i-1]);
    }
    fileReadSlovo.close();
    }
    //================================
    fileReadGamma = SD.open("GAMMA.txt");
    if (fileReadGamma)
    {
    int i=0;
    while (fileReadGamma.available())
    {
    char c = fileReadGamma.read();
    SLOVO_GAMMA[i++] = c;
    Serial.println(SLOVO_GAMMA[i-1]);
    }
    fileReadGamma.close();
    }

    //========================================
    // Открываем файл для записи. Только один файл
    // может быть открыт одновременно
    // вы можете закрыть файл, что бы открыть другой.
    fileWrite = SD.open("test.txt",FILE_WRITE);
    if(fileWrite){
    fileWrite.print("blablanla");
    fileWrite.close();
    }
    }

    void loop()
    {
    //Тут ничего не происходит
    }



    Посмотрите пожалуйста в чем может быть ошибка.Когда добавляю
    fileWrite = SD.open("test.txt",FILE_WRITE);
    if(fileWrite){
    fileWrite.print("blablanla");
    fileWrite.close();
    }
    то происходит зацикливание программы.