我正在尝试在两个ESP8266 12 E模块之间进行通信,一个在接入点模式下设置,另一个在站点设置。我的目标是建立两者之间的沟通。
接入点的代码:
#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但失败了。
我对网络有点新意,任何建议都非常感激。
答案 0 :(得分:1)
尝试以下操作。
服务器循环
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);
}
}
答案 1 :(得分:0)
除非密码长度至少为8个字符,否则原始帖子中的代码不会建立网络。使用&#34; lol12345&#34;将工作。希望它有所帮助 - 这个错过的细节花了我4天。它可能是我的IDE版本(arduino 1.8.1)的manefestation。