SD карта, запись, чтение, сравнение

Тема в разделе "Закажу проект", создана пользователем U-Alexey, 6 июн 2016.

Метки:
?

Это сложное задание?

  1. Да

    0 голосов
    0,0%
  2. Нет

    4 голосов
    100,0%
  1. tgwt

    tgwt Нерд

    Ну по идее, мой код должен работать. Сегодня с работы отпишусь. Проверю его. Вот код для создания и удаления файла с карты.

    Код (C++):
    /*
      SD card basic file example

    This example shows how to create and destroy an SD card file
    The circuit:
    * SD card attached to SPI bus as follows:
    ** MOSI - pin 11
    ** MISO - pin 12
    ** CLK - pin 13
    ** CS - pin 4

    created   Nov 2010
    by David A. Mellis
    modified 9 Apr 2012
    by Tom Igoe

    This example code is in the public domain.

    */

    #include <SPI.h>
    #include <SD.h>

    File myFile;

    void setup() {
      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }


      Serial.print("Initializing SD card...");

      if (!SD.begin(4)) {
        Serial.println("initialization failed!");
        return;
      }
      Serial.println("initialization done.");

      if (SD.exists("example.txt")) {
        Serial.println("example.txt exists.");
      } else {
        Serial.println("example.txt doesn't exist.");
      }

      // open a new file and immediately close it:
      Serial.println("Creating example.txt...");
      myFile = SD.open("example.txt", FILE_WRITE);
      myFile.close();

      // Check to see if the file exists:
      if (SD.exists("example.txt")) {
        Serial.println("example.txt exists.");
      } else {
        Serial.println("example.txt doesn't exist.");
      }

      // delete the file:
      Serial.println("Removing example.txt...");
      SD.remove("example.txt");

      if (SD.exists("example.txt")) {
        Serial.println("example.txt exists.");
      } else {
        Serial.println("example.txt doesn't exist.");
      }
    }

    void loop() {
      // nothing happens after setup finishes.
    }
     
  2. tgwt

    tgwt Нерд

    Как успехи? Код проверить не могу, слишком занят.
     
  3. U-Alexey

    U-Alexey Нуб

    Привет! Только что приехал сам с работы, сейчас буду пробовать.
     
  4. U-Alexey

    U-Alexey Нуб

    У меня не получилось ( . Я толь учусь программировать. tgwt помоги пожалуйста, с меня на пиво))) Идея на данный момент такова. Я включаю монитор порта, вводя определенную букву, выполняются определенные команды. H - записать новый идентификатор, L - считать все идентификаторы, V - проверить на уникальность (это и не получается).

    Код (C++):
    #include <SD.h> //Библиотека SD карты
    #include <SPI.h>
    char incomingBytes[8]; //Новый идентификатор 7-и значный
    int CSpin = 4;
    File myFile; // файл


    void setup() {
      // инициализация последовательного порта
      Serial.begin(9600);
      pinMode(CSpin, OUTPUT); // SD пин выход
      // Проверка SD карты
       if(!SD.begin(CSpin))
      {
        Serial.print("Net svjzi s modulem SD");
        return;
        }
        else {
        Serial.println("Modul SD podkluchen");
        }

    }
    void loop() {
          if (Serial.available() > 0) {
                     int newid;
                     newid = Serial.read();
                     // Вызов функции записи на SD карту
                      if (newid == 'H') {
                      Serial.println("===Zapis===");
                       zapis();
                      }
                      // Вызов функции чтения
                       else if (newid == 'L') {
                        Serial.println("===Chtenie===");
                       chtenie();
                      }
                      else if (newid == 'V') {
                        Serial.println("===UNIK===");
                        // Проверка на уникальность
                      }
                  }
    }

    // Запись на SD карту
    void zapis(){
        Serial.println("Podkluchenie k SD karte");
        while (!Serial.available()) {
         if (Serial.available()>0){
            Serial.readBytes(incomingBytes, 7);
            Serial.println(incomingBytes);
              myFile = SD.open("baza.csv", FILE_WRITE);
              if(myFile)
              {
                  myFile.println(incomingBytes);
                  myFile.close();
                  Serial.println("Identifikator dobavlen");
                  return;
                }
                else
                {
                  Serial.println("Net vozmojnosti otkryt kartu");
                  return;
                  }
         }
       }
      }
    // считываем все данные из baza.csv:
    void chtenie(){
      myFile = SD.open("baza.csv");
      if (myFile) {
      while (myFile.available()) {
      Serial.write(myFile.read());
     
      }
      // закрываем файл:
      myFile.close();
      } else {
      // если файл не открылся, отображаем сообщение об ошибке:
      Serial.println("Oshibka baza.csv");
      }
    }
     
  5. tgwt

    tgwt Нерд

    А что конкретно не получается?