Получение нескольких HTTP за один раз ESP8266

#html #ajax #arduino #esp8266

#HTML #ajax #arduino #esp8266

Вопрос:

Я не могу понять, как отправить данные за один раз. Это часть кода.

Ну, почему я спрашиваю, так это то, что одновременная отправка его немного задерживается.

Я видел, что в другой теме кто-то опубликовал фрагмент кода, но это не сработало.

 void handleRoot() {
  String s = MAIN_page; //Read HTML contents
  server.send(200, "text/html", s); //Send web page
}
    
void handleFORESTTEMPERATURE() {
  String ForrestTemperatureDev =  String(ForestTemperature, 1);
     
  server.send(200, "text/plane", ForestTemperatureDev); //Send ADC value only to client ajax request
}
    
void handleFORESTPRESSURE() {
  String ForrestPressureDev = String(ForestPressure);
     
  server.send(200, "text/plane", ForrestPressureDev); //Send ADC value only to client ajax request
}
    
void handleFORESTHUMIDITY() {
  String ForrestHumidityDev = String(ForestHumidity);
     
  server.send(200, "text/plane", ForestHumidityDev); //Send ADC value only to client ajax request
}

server.on("/readFORESTPRESSURE", handleFORESTPRESSURE);
server.on("/readFORESTTEMPERATURE", handleFORESTTEMPERATURE);
server.on("/readFORESTHUMIDITY", handleFORESTHUMIDITY);
server.on("/readFORESTWEATHERSTATUS", handleFORESTWEATHERSTATUS);
 

Комментарии:

1. что-то вроде этого github.com/esp8266/Arduino/blob /… ?

2. @Juraj да, именно так, как я могу это сделать с приведенной выше информацией? можешь мне показать. поскольку я все еще учусь. с уважением и благодарностью

Ответ №1:

Что-то вроде этого отправило бы все три значения, разделенные символом a ; , когда readALL запрашивается. Три значения могут быть разделены ; в вашем принимающем приложении. Использование JSON потребует немного больше работы.

Примечание 1: Непроверенный, я только что ввел его, но вы поняли идею.

Примечание2: это text/plain не text/plane так.

 void handleRoot() {
  String s = MAIN_page; //Read HTML contents
  server.send(200, "text/html", s); //Send web page
}

void handleFORESTTEMPERATURE() {
  String ForrestTemperatureDev =  String(ForestTemperature, 1);
  server.send(200, "text/plain", ForestTemperatureDev); //Send ADC value only to client ajax request
}

void handleFORESTPRESSURE() {
  String ForrestPressureDev = String(ForestPressure);
  server.send(200, "text/plain", ForrestPressureDev); //Send ADC value only to client ajax request
}

void handleFORESTHUMIDITY() {
  String ForrestHumidityDev = String(ForestHumidity);
  server.send(200, "text/plain", ForestHumidityDev); //Send ADC value only to client ajax request
}

void handleALL() {
  String AllDev = String(ForestTemperature, 1)   ";"   String(ForestPressure)   ";"   String(ForestHumidity);
  server.send(200, "text/plain", AllDev); //Send ADC values only to client ajax request
}

server.on("/readFORESTPRESSURE", handleFORESTPRESSURE);
server.on("/readFORESTTEMPERATURE", handleFORESTTEMPERATURE);
server.on("/readFORESTHUMIDITY", handleFORESTHUMIDITY);
server.on("/readFORESTWEATHERSTATUS", handleFORESTWEATHERSTATUS);
server.on("/readALL", handleALL);
 

Комментарии:

1. Спасибо!! теперь мне нужно посмотреть, как с этим справиться на моей HTML-странице. скоро я открою еще один вопрос. Спасибо

2. потому что прямо сейчас я не знаю, какое значение имеет какое устройство. итак, я не знаю, возможно ли это другим способом?. потому что я использую текущий статус на своей странице, а также кнопку, которая показывает значение при нажатии. прямо сейчас я вызываю такие устройства на странице html, getData(‘UVFOREST’, ‘readFORESTUV’);.

3. Значения из handleAll всегда будут поступать в одном и том же порядке в одной строке на веб-странице, например: «temp;pres;hum». Поместите это в Javascript в строку str, а затем выполните: var values = str.split(«;»); тогда значения [0] будут температурой, значения [1] будут давлением, значения [2] будут влажностью.

4. спасибо, хорошо, я пробую, я все еще учусь. я знаю, что ты имеешь в виду, но можешь ли ты показать мне пример сценария, чтобы я мог начать обучение. с уважением

5. я обнаружил это, var input = «10;11;15»; var arr = input.split(«;»); alert(arr[1]);