Я пытаюсь создать REST-сервер на Arduino MKR1000.после поиска в Google я наткнулся на библиотеку aRest, которая обрабатывает большую часть необходимого мне материала.
документация библиотеки aRest
Поэтому я создал образец эскиза на основе руководств.Вот код:
#include < SPI.h >
#include < WiFi101.h >
#include < aREST.h >
aREST rest = aREST();
int status = WL_IDLE_STATUS;
WiFiServer restServer(80);
char ssid[] = "user"; // not actual username
char pass[] = "pass"; // not actual password
int clapMode(String data){
Serial.println("Request Recieved: " + data);
}
void setup() {
Serial.begin(115200);
rest.set_id("000");
rest.set_name("MKR1000");
rest.function("test",clapMode);
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network. Change this line if using open or WEP
network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}
Serial.println();
// you're connected now, so print out the status:
printWifiStatus();
// Start server
restServer.begin();
Serial.println(F("Listening for connections..."));
}
void loop() {
WiFiClient client = restServer.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
rest.handle(client);
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
IPAddress subnet = WiFi.subnetMask();
Serial.print("Netmask: ");
Serial.println(subnet);
IPAddress gateway = WiFi.gatewayIP();
Serial.print("Gateway: ");
Serial.println(gateway);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
Код работает в основном.После использования POSTMAN для выполнения GET arduino может дать соответствующий ответ.
Теперь для части, которая не работает, это конечная точка, которую я только что создал, используя этот код
rest.function("test",clapMode);
после выполнения GET в почтальоне, arduino может дать ответ, но он должен выполнить этот код
int clapMode(String data){
Serial.println("Request Recieved: " + data);
}
, но на моем серийном мониторе я ничего не получаю.
Также я не смог найти, как адаптировать ответ arduino от запроса.Как мне это сделать?
Большое спасибо