Я хотел записать данные о клиенте на 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"); } } }