Как получить доступ к ядру Spark через браузер?

Я хочу, чтобы ядро ​​работало как веб-сервер, чтобы отображать текст при доступе через веб-браузер
с помощью этой команды >>> (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

0

Решение

Браузер не будет очень доволен тем, что вы сделали. Ничто из того, что вы возвращаете в браузер, не подчиняется спецификациям протокола 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

Удачи!

0

Другие решения


По вопросам рекламы [email protected]