在客户端-服务器设置中两个 ESP8266 之间的通信更快
Faster communication between two ESP8266 in client-server setup
我正在尝试在两个 ESP8266 12 E 模块之间进行通信,一个设置为接入点模式,另一个设置为站。我的目的是建立两者之间的沟通。
- 如何使数据传输更快?
- 这就是所谓的TCP/IP连接吗?
接入点代码:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
WiFiServer server(80);
void setup() {
WiFi.mode(WIFI_AP);
WiFi.softAP("esp", "lol123");
server.begin();
Serial.begin(9600);
IPAddress IP = WiFi.softAPIP();
//Serial.flush();
Serial.println();
Serial.print("Server IP is: ");
Serial.println(IP);
}
void loop() {
char ID, R, G, B, anim_ID;
WiFiClient client = server.available();
int data_outgoing[5] = {10, 128, 128, 123, 123};
int mapFun[5];
Serial.print("Sent data: ");
Serial.print(ESP.getChipId());
Serial.println();
for(int i = 0; i < 5; i++){
mapFun[i] =data_outgoing[i];
//mapFun[i] = map(mapFun[i], 0, 255, 0, 128);
client.print(mapFun[i]);
Serial.print(mapFun[i]);
}
delay(10);
}
对于接收端,站。
const char* ssid = "esp";
const char* password = "lol123";
const char* host = "192.168.4.1";
WiFiServer server(80);
void setup(){
int count = 0;
Serial.begin(9600);
delay(10);
//Serial.println();
//Serial.println();
//Serial.print("Connecting to: ");
//Serial.print(ssid);
//Serial.println();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
//Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.print(".");
count++;
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("Time for connection(s): ");
Serial.print(count);
Serial.println();
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
Serial.println();
}
void loop(){
WiFiClient client;
if((client.connect(host, 80))){
// Serial.println("Connected");
// Serial.print(host);
// Serial.println();
}
String data;
data = client.readStringUntil('\n');
//Serial.println(data);
for(int i = 0; i< 100; i++){
Serial.write(data[i]);
Serial.print(data[i]);
}
}
此设置的问题是数据传输速度很快,但接收数据时却很慢。在站端接收数据需要相当长的时间,可以做些什么来使这个过程更快,是否有任何其他协议可以用来使这个过程更快?
输出是这样的..
WiFi connected
Time for connection(s): 3
IP address:
192.168.4.2
10128128123123
长数据是我收到的字符串,如何转换成整数?我尝试了 ATOI 但失败了。
我对网络有点陌生,非常感谢任何建议。
尝试关注。
服务器循环
void loop() {
// listen for incoming clients
WiFiClient client = server.available();
if (client) {
Serial.println("new client");
if (client.connected()) {
if (client.available()) {
int data_outgoing[5] = {10, 128, 128, 123, 123};
for(int i = 0; i < 5; i++){
client.print(data_outgoing[i]);
//Edit
client.print('\n');
}
}
}
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
客户端循环
void loop(){
WiFiClient client;
WiFiClient client = client.connect(host, 80);
while (client.connected()) {
char c = client.read();
Serial.print(c);
}
}
原文post中的代码只有密码长度至少为8个字符才能建立网络。使用 "lol12345" 将起作用。希望它能有所帮助——这个遗漏的细节让我花了 4 天时间。这可能是我的 IDE 版本(arduino 1.8.1)的表现。
我正在尝试在两个 ESP8266 12 E 模块之间进行通信,一个设置为接入点模式,另一个设置为站。我的目的是建立两者之间的沟通。
- 如何使数据传输更快?
- 这就是所谓的TCP/IP连接吗?
接入点代码:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
WiFiServer server(80);
void setup() {
WiFi.mode(WIFI_AP);
WiFi.softAP("esp", "lol123");
server.begin();
Serial.begin(9600);
IPAddress IP = WiFi.softAPIP();
//Serial.flush();
Serial.println();
Serial.print("Server IP is: ");
Serial.println(IP);
}
void loop() {
char ID, R, G, B, anim_ID;
WiFiClient client = server.available();
int data_outgoing[5] = {10, 128, 128, 123, 123};
int mapFun[5];
Serial.print("Sent data: ");
Serial.print(ESP.getChipId());
Serial.println();
for(int i = 0; i < 5; i++){
mapFun[i] =data_outgoing[i];
//mapFun[i] = map(mapFun[i], 0, 255, 0, 128);
client.print(mapFun[i]);
Serial.print(mapFun[i]);
}
delay(10);
}
对于接收端,站。
const char* ssid = "esp";
const char* password = "lol123";
const char* host = "192.168.4.1";
WiFiServer server(80);
void setup(){
int count = 0;
Serial.begin(9600);
delay(10);
//Serial.println();
//Serial.println();
//Serial.print("Connecting to: ");
//Serial.print(ssid);
//Serial.println();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
//Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.print(".");
count++;
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("Time for connection(s): ");
Serial.print(count);
Serial.println();
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
Serial.println();
}
void loop(){
WiFiClient client;
if((client.connect(host, 80))){
// Serial.println("Connected");
// Serial.print(host);
// Serial.println();
}
String data;
data = client.readStringUntil('\n');
//Serial.println(data);
for(int i = 0; i< 100; i++){
Serial.write(data[i]);
Serial.print(data[i]);
}
}
此设置的问题是数据传输速度很快,但接收数据时却很慢。在站端接收数据需要相当长的时间,可以做些什么来使这个过程更快,是否有任何其他协议可以用来使这个过程更快? 输出是这样的..
WiFi connected
Time for connection(s): 3
IP address:
192.168.4.2
10128128123123
长数据是我收到的字符串,如何转换成整数?我尝试了 ATOI 但失败了。
我对网络有点陌生,非常感谢任何建议。
尝试关注。
服务器循环
void loop() {
// listen for incoming clients
WiFiClient client = server.available();
if (client) {
Serial.println("new client");
if (client.connected()) {
if (client.available()) {
int data_outgoing[5] = {10, 128, 128, 123, 123};
for(int i = 0; i < 5; i++){
client.print(data_outgoing[i]);
//Edit
client.print('\n');
}
}
}
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
客户端循环
void loop(){
WiFiClient client;
WiFiClient client = client.connect(host, 80);
while (client.connected()) {
char c = client.read();
Serial.print(c);
}
}
原文post中的代码只有密码长度至少为8个字符才能建立网络。使用 "lol12345" 将起作用。希望它能有所帮助——这个遗漏的细节让我花了 4 天时间。这可能是我的 IDE 版本(arduino 1.8.1)的表现。