Я хочу, чтобы ядро работало как веб-сервер, чтобы отображать текст при доступе через веб-браузер
с помощью этой команды >>> (client.println («Извините»);) он должен показывать «извините» в браузере, верно?
но когда я набираю IP-адрес ядра в браузере. Он сказал: «Эта веб-страница недоступна»
Спасибо за чтение.
TCPServer server = TCPServer(80);
TCPClient client;
void setup()
{
// start listening for clients
server.begin();
// Make sure your Serial Terminal app is closed before powering your Core
Serial.begin(9600);
// Now open your Serial Terminal, and hit any key to continue!
while(!Serial.available()) SPARK_WLAN_Loop();
Serial.println(WiFi.localIP());
Serial.println(WiFi.subnetMask());
Serial.println(WiFi.gatewayIP());
Serial.println(WiFi.SSID());
}
void loop()
{
if (client.connected()) {
// echo all available bytes back to the client
while (client.available()) {
server.write(client.read());
server.write("Hello world!");
client.println("Sorry"); //<<<<<<<<<<<<<<should show this
}
} else {
// if no client is yet connected, check for a new connection
client = server.available();
}
}
Вот код, который я использую в Arduino и Ethernet Sheild, и он отлично работает
#include <SPI.h>
#include <Ethernet.h>
//Enter a new MAC address from your computer MAC plus one.
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
EthernetServer server(80); // Create new server object at selected port
void setup() {
Serial.begin(9600);
Serial.println("Requesting ip address ...");
Ethernet.begin(mac,ip,gateway,subnet);
Serial.print("My IP address: ");
Serial.print(Ethernet.localIP());
server.begin(); // begin listening
}
void loop() {
EthernetClient client = server.available(); // Get connection
if(server.available()){ // check if there are connection
Serial.println("new client connection");
while (client.connected()) { // check if the client still alive
if (client.available()) { // check if the connection are still alive
char c = client.read(); // read data from Ethernet buffer
if(c=='='){ p = client.read(); }
Serial.write(c);
if(c == '\n'){ // check if there are terminate character
client.println("sorry");
break;
}
}
}
client.stop(); // disconnect from client
Serial.println("client disconnected");
}
delay(1000);
}///// credit P'O ITE
Браузер не будет очень доволен тем, что вы сделали. Ничто из того, что вы возвращаете в браузер, не подчиняется спецификациям протокола HTTP. Вы должны использовать клиент telnet, чтобы открыть соединение через порт 80 с IP-адресом ядра. Затем вы увидите что-то ближе к тому, что вы ожидали.
Использование SparkCore и его скромных средств для возврата веб-страницы возможно, но вы должны быть осторожны с размерами. Чтобы вернуть веб-страницу, браузер будет доволен, вы можете игнорировать запрос и всегда возвращать это:
HTTP/1.1 200 OK
Date: Tue, 31 Mar 2015 22:38:34 GMT
Server: SparkCore
Content-Type: text/html; charset=UTF-8
Content-Length: 138
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
Hello World, this is a very simple HTML document.
</body>
</html>
Это минимальный HTTP-ответ. Я не проверял это, но уверен, что это сработает. Чтобы узнать больше о HTTP и о том, что вам нужно будет сделать, ознакомьтесь с Википедией:
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Я также нашел хорошую ветку на community.spark.io:
http://community.spark.io/t/spark-core-web-server-solved/10110/4
Удачи!