Запись данных на sd о клиенте полученные из интернета

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

  1. yhl

    yhl Нерд

    Я хотел записать данные о клиенте на sd из полученные из интернета. Я основал код на примере веб сервера. Данные о клиенте выводятся Serial.write(c);. Я ввел переменную String pageString = " "; в нее нужно записать данные я это записал так
    Код (C++):
    if (client) {
        Serial.println("new client");
        boolean currentLineIsBlank = true;
        //пока клиет подключен
        while (client.connected()) {
          //если данные пришли
          if (client.available()) {
            //читаем символ
            char c = client.read();
             //записываем данные в переменную String
            pageString = String(c);
            Serial.write(c);
    Потом сделал запись на sd , но ничего не получилось. Помогите разобраться?
    скетч
    Код (C++):
    #include <SPI.h>
    #include <Ethernet2.h>
    #include <SD.h>

    File myFile;

    //прописывам мас и ip
    byte mac[] = {
      0x90, 0xA2, 0xDA, 0x10, 0x1C, 0xDC
    };
    IPAddress ip(192, 168, 0, 69);
    //вешаем сервер на порт 80
    EthernetServer server(80);

    void setup() {
      //запускаем сериал порт
      Serial.begin(9600);
      //ждем когда данные придут
      while (!Serial) {
        ;
      }
      Serial.print("Initializing SD card...");
      //если sd не подключена
      if (!SD.begin(4)) {
        Serial.println("initialization failed!");
        return;
      }
      Serial.println("initialization done.");


      //запускаем сервер
      Ethernet.begin(mac, ip);
      server.begin();
      Serial.print("server is at ");
      //выводим Ip
      Serial.println(Ethernet.localIP());
    }

    void loop() {
      //создаем переменную String
      String pageString = " ";
      //если кто установил соединение с сервером
      //создаем объект-клиент
      EthernetClient client = server.available();
      //если клиет
      if (client) {
        Serial.println("new client");
        boolean currentLineIsBlank = true;
        //пока клиет подключен
        while (client.connected()) {
          //если данные пришли
          if (client.available()) {
            //читаем символ
            char c = client.read();
            //записываем данные в переменную String
            pageString <= String(c);
            Serial.write(c);

            //стандартный HTTP заголовок
            //он тоже заканчивается пустой строкой!
            if (c == '\n' && currentLineIsBlank) {
              client.println("HTTP/1.1 200 OK");
              client.println("Content-Type: text/html");
              client.println("Connection: close");
              client.println("Refresh: 60");
              client.println();
              client.println("<!DOCTYPE HTML>");
              client.println("<html>");
              client.print("<meta http-equiv='Content-Type' content='text/html; charset=utf-8 /'>");
              client.print("<head>");
              client.print("<title>");
              client.print("SmartHome");
              client.print("</title>");
              client.print("</head>");
              client.print("<body bgcolor='#FA8E47'>");
              client.print("Hello, new client");
              client.print("</body>");
              client.println("</html>");
              //выходим из цикла while
              break;
            }
            //если получен перевод строки, значит началась новая
            //строка. Выставим флаг current_line_is_blank = true
            if (c == '\n') {
              currentLineIsBlank = true;
            }
            //если получен любой другой символ, отличный
            //от возврата каретки ('\r'), значит получаемая строка непустая
            else if (c != '\r') {
              currentLineIsBlank = false;
            }
          }
        }
        delay(1);
        //разрываем соединение
        client.stop();
        Serial.println("client disconnected");
        //создаем файл
        myFile = SD.open("test.txt", FILE_WRITE);
        if (myFile) {
          Serial.print("Writing to test.txt...");
          //зприсывам данные
          myFile.println("new client");
          myFile.println(pageString);
          myFile.println("client disconnected");
          myFile.close();
          Serial.println("done.");
        } else {
          Serial.println("error opening test.txt");
        }
        // re-open the file for reading:
        myFile = SD.open("test.txt");
        if (myFile) {
          Serial.println("test.txt:");

          // read from the file until there's nothing else in it:
          while (myFile.available()) {
            Serial.write(myFile.read());
          }
          // close the file:
          myFile.close();
        } else {
          // if the file didn't open, print an error:
          Serial.println("error opening test.txt");
        }
        // re-open the file for reading:
        myFile = SD.open("test.txt");
        if (myFile) {
          Serial.println("test.txt:");

          // read from the file until there's nothing else in it:
          while (myFile.available()) {
            Serial.write(myFile.read());
          }
          // close the file:
          myFile.close();
        } else {
          // if the file didn't open, print an error:
          Serial.println("error opening test.txt");
        }
      }
    }
     
    Снимок экрана 2015-10-08 в 16.00.29.png
     
  2. vvr

    vvr Инженерище

    а без переводчика слабо вопрос сформулировать?:)