通过wifi从ESP32发送数据到Processing
Send data from ESP32 to Processing via wifi
我试图连接 ESP32(客户端)- 处理(服务器),我想我成功了,但服务器没有接收或打印任何东西。为什么处理无法识别客户端何时连接?我是 Processing 的新手,想弄明白它是如何工作的。
处理中:
import processing.net.*;
Server myServer;
void setup() {
size(400, 400);
// Starts a myServer on port 5204
myServer = new Server(this, 5204);
println(Server.ip());
}
void serverEvent(Server someServer, Client someClient) {
println("We have a new client: " + someClient.ip());
}
ESP32:
#include <WiFi.h>
const char* ssid = "myNetwork";
const char* pass = "myPassword";
void setup()
{
Serial.begin(115200);
delay(10);
WiFi.begin(ssid,pass);
Serial.print("Connecting.");
while(WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.print("WiFi connected - IP address: ");
Serial.println(WiFi.localIP());
delay(500);
}
void loop()
{
const uint16_t port = 5204;
const char * host = "10.0.26.xx";
Serial.print("Connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
if (client.connect(host, port)){
Serial.println("Sending data"); // printed on serial monitor
client.print("Hello");
}
// This will send a request to the server
client.print("Send this data to the server");
Serial.println("Closing connection.");
client.stop();
}
已编辑
即使我没有 运行 处理程序,它也能提供相同的打印效果。那么它是否连接到其他地方而不是服务器?
在处理过程中我只得到 "The value of parameter someServer is not used"
您的处理 代码缺少从客户端检索数据的部分。
您需要添加如下内容:
void draw() {
// Get the next available client
Client thisClient = myServer.available();
// If the client is not null, and says something, display what it said
if (thisClient != null) {
String whatClientSaid = thisClient.readString();
if (whatClientSaid != null) {
println(thisClient.ip() + "t" + whatClientSaid);
}
}
}
我没有看到任何其他明显的问题,但我现在无法测试与您的设置类似的东西。也许你可以试试看。
嗯,我想通了。这是一个 防火墙 问题。我 禁用 防火墙,然后它起作用了。此外,在此之前,我为处理和端口创建了一个新规则,但由于某种原因它不起作用,我不明白为什么。 禁用它是我问题的解决方案。
我试图连接 ESP32(客户端)- 处理(服务器),我想我成功了,但服务器没有接收或打印任何东西。为什么处理无法识别客户端何时连接?我是 Processing 的新手,想弄明白它是如何工作的。
处理中:
import processing.net.*;
Server myServer;
void setup() {
size(400, 400);
// Starts a myServer on port 5204
myServer = new Server(this, 5204);
println(Server.ip());
}
void serverEvent(Server someServer, Client someClient) {
println("We have a new client: " + someClient.ip());
}
ESP32:
#include <WiFi.h>
const char* ssid = "myNetwork";
const char* pass = "myPassword";
void setup()
{
Serial.begin(115200);
delay(10);
WiFi.begin(ssid,pass);
Serial.print("Connecting.");
while(WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.print("WiFi connected - IP address: ");
Serial.println(WiFi.localIP());
delay(500);
}
void loop()
{
const uint16_t port = 5204;
const char * host = "10.0.26.xx";
Serial.print("Connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
if (client.connect(host, port)){
Serial.println("Sending data"); // printed on serial monitor
client.print("Hello");
}
// This will send a request to the server
client.print("Send this data to the server");
Serial.println("Closing connection.");
client.stop();
}
已编辑
即使我没有 运行 处理程序,它也能提供相同的打印效果。那么它是否连接到其他地方而不是服务器?
在处理过程中我只得到 "The value of parameter someServer is not used"
您的处理 代码缺少从客户端检索数据的部分。
您需要添加如下内容:
void draw() {
// Get the next available client
Client thisClient = myServer.available();
// If the client is not null, and says something, display what it said
if (thisClient != null) {
String whatClientSaid = thisClient.readString();
if (whatClientSaid != null) {
println(thisClient.ip() + "t" + whatClientSaid);
}
}
}
我没有看到任何其他明显的问题,但我现在无法测试与您的设置类似的东西。也许你可以试试看。
嗯,我想通了。这是一个 防火墙 问题。我 禁用 防火墙,然后它起作用了。此外,在此之前,我为处理和端口创建了一个新规则,但由于某种原因它不起作用,我不明白为什么。 禁用它是我问题的解决方案。