如何从 Arduino 服务器向 $.get 调用 return 数据?

How can I return data to a $.get call from an Arduino server?

我有一个带有 ESP8266 WiFi 模块的 Arduino Leonardo,我正在通过 jQuery 的 $.get() 从浏览器打开和关闭板载 LED(引脚 13)。它有效,但现在我想 return 数据到这个 get 调用。我该怎么做?我知道我必须将其编码为纯文本并从 "server" 中 return,但不知道如何。

这是我的 JavaScript/jQuery 行:

function setLEDstat(setLED){
    $.get("http://192.168.0.222:12345/", {LED:setLED}, function(data){
        console.log(data);
    });
}

这是我的 Arduino 到目前为止的回应:

void switchLED(){
  int connectionId = Serial1.parseInt();
  Serial1.find("LED=");
  int setLED = Serial1.parseInt();
  Serial.println("Conn: " + String(connectionId) + ", LED: " + String(setLED));
  if (setLED == 1){
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
  delay(100);
  Serial1.println("AT+CIPSEND=" + String(connectionId) + ",38");
  delay(100);
  Serial1.println("HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n");
  delay(500);
  Serial1.println("AT+CIPCLOSE=" + String(connectionId));
}

我能够通过 HTTP headers 获得响应(你每天都会学到新东西!!)。我的 Arduino 函数的代码现在是这样的:

void switchLED(){
  int connectionId = Serial1.parseInt();
  Serial1.find("LED=");
  int setLED = Serial1.parseInt();
  Serial.println("Conn: " + String(connectionId) + ", LED: " + String(setLED));
  if (setLED == 1){
    digitalWrite(LED, HIGH);
    nanoSerial.println("LED=1");
  } else {
    digitalWrite(LED, LOW);
    nanoSerial.println("LED=0");
  }
  delay(100);
  Serial1.println("AT+CIPSEND=" + String(connectionId) + ",145");
  delay(100);
  Serial1.println("HTTP/1.1 200 OK");
  Serial1.println("Access-Control-Allow-Origin: *");
  Serial1.println("Content-Length:05");
  Serial1.println("Connection: close");
  Serial1.println("Content-Type: application/x-www-form-urlencoded");
  Serial1.println("");
  Serial1.println("LED=" + String(setLED));
  delay(500);
  Serial1.println("AT+CIPCLOSE=" + String(connectionId));
}

我希望这对有需要的人有所帮助 ;)