Димон Безпарольный 2 15 ноября, 2018 Опубликовано 15 ноября, 2018 (изменено) · Жалоба Сервер это громко сказано. Задача - ввести десяток параметров со странички открытой в браузере. Проблема в том, что я могу сгенерить только 7 окон ввода. Поскольку передать за один раз я могу только 2К. Пробовал разбить на передачу в два массива - не получилось. ESP настроена как точка доступа printf("\rServer!\r"); // WiFi_check_with_cmd("AT+RST\r\n","ready",CMD, DEFAULT_TIMEOUT); //WiFi_check_with_cmd("AT+CIPCLOSE\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //Set IP address of softAP, save as default WiFi_check_with_cmd("ATE1\r\n", "OK\r\n", CMD, DEFAULT_TIMEOUT); WiFi_check_with_cmd("AT+CWMODE=2\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //2 : softAP mode WiFi_check_with_cmd("AT+CWDHCP=0,1\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //0 : set soft-AP, 1 : Enable DHCP WiFi_check_with_cmd("AT+CIPAP=\"10.10.10.100\"\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //Set IP address of softAP, save as default WiFi_check_with_cmd("AT+CIPMUX=1\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //Set multiple connections mode //Для запуска сервера модуль должен быть в режиме множественных подключений AT+CIPMUX=1 WiFi_check_with_cmd("AT+CIPSERVER=1,80\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //Configure as server WiFi_check_with_cmd("AT+CWSAP=\"COOLER\",\"12345678\",4,3\r\n","OK\r\n",CMD, DEFAULT_TIMEOUT); //Default config of softAP mode Поля ввода - вывода генерятся программно: Lenth = GenerateGet(SprintFBUF, "Year"); //Название метода GET Lenth = GenerateCURRField(SprintFBUF, "Year", Yar); //Вывод текущего значения параметра Lenth = GenerateInputField(SprintFBUF, "Year", Yar); //Поле ввода и значение, подставляемое в поле ввода Lenth = GenerateKnob(SprintFBUF, "Save Year"); //Кнопка и ее название В итоге все выводится в порт ESP: Lenth = ADDBody(SprintFBUF, "</table><br><br><table align=\"center\"><tr><td><form method='get'action='changemode'>"); Lenth = ADDBody(SprintFBUF, "</form></tr></td></table></body></html>"); CalcLength(SprintFBUF); // Internet_Send((const char*)SprintFBUF, Lenth); Сам код вывода: char num[6]; // if(len > 0) // { // WiFi_send_cmd("AT+CIPSEND=0,"); //Для станции sprintf(num,"%d", len); // WiFi_send_cmd(num); // if(!WiFi_check_with_cmd("\r\n",">",CMD, DEFAULT_TIMEOUT)) { // return 0; // } // HAL_Delay(400); // int i; // for(i = 0; i< len; i++) // { // if(!(i%200)) {HAL_Delay(50);}//Чтобы не делать длинный кольцевой буфер WIFI_Putchar(str[i]); // } // if(!WiFi_wait_for_resp("SEND OK\r\n", DATA, DEFAULT_TIMEOUT * 5)) { // return 0; // } // } // return len; // Но если я дважды вызываю AT+CIPSEND=0,454, вторая часть не передается, пишет Link Error. Еще часто идут запросы GET /favicon.ico. Я на них тоже отвечаю основной страницей. Наверно это неправильно, но не знаю как правильно. В итоге вот что получается: Изменено 15 ноября, 2018 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 15 ноября, 2018 Опубликовано 15 ноября, 2018 · Жалоба Сделайте статическую страницу, а значения передавайте через отдельный запрос (json, xml или что удобнее). А на favicon.ico отправляйте картинку или 404 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 15 ноября, 2018 Опубликовано 15 ноября, 2018 · Жалоба 18 minutes ago, x893 said: Сделайте статическую страницу, а значения передавайте через отдельный запрос (json, xml или что удобнее). А на favicon.ico отправляйте картинку или 404 Мне бы об этом где - то почитать. Это мой первый подобный проект... Как вообще такие сервера делаются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 16 ноября, 2018 Опубликовано 16 ноября, 2018 · Жалоба На github примеров 100500. Первая попалась https://github.com/spacehuhn/esp8266_deauther Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 26 декабря, 2018 Опубликовано 26 декабря, 2018 (изменено) · Жалоба Сервер доделал, работает. Помогло это: https://htmlweb.ru/html/text.php Выбрал POST. Почему - то при вводе текста на терминал выводится совсем иное. Например если ввести 8:30-21.01, на терминал выводится 8%3A30-21%3A01. Проблема с кодировкой? Можно как - то это победить? Изменено 26 декабря, 2018 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба 3 minutes ago, Димон Безпарольный said: %3A HTMLEncode / HTMLDecode UrlEncode / UrlDecode %3A = ':' Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 26 декабря, 2018 Опубликовано 26 декабря, 2018 (изменено) · Жалоба 5 minutes ago, x893 said: HTMLEncode %3A = ':' Это я понял. Если HTML так кодирует, значит непобедимо. Только непонятно зачем... Рабор такой строки добавляет головной боли. Изменено 26 декабря, 2018 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба 21 minutes ago, Димон Безпарольный said: Это я понял. Если HTML так кодирует, значит непобедимо. Только непонятно зачем... Рабор такой строки добавляет головной боли. Всё победимо. И уже это побеждено 100500 раз. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба 1 minute ago, x893 said: Всё победимо. И уже это побеждено 100500 раз. Краем глаза можно почитать об этом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 26 декабря, 2018 Опубликовано 26 декабря, 2018 · Жалоба Конечно. Исходник HTMLDecode/UrlDecode на любом понятном языке программирования. Или RFC для HTTP протокола. Можно здесь внимательно http://www.asciitable.com/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться