ESP32 Wifiserver 和 Android Appp
ESP32 Wifiserver and Android Appp
所以我得到了我的 ESP32 并想做一些项目,我想用 Android 应用程序控制它们,例如 LED 条纹。我已经用我的 Raspberry Pi 做到了,它运行得很好。
我已经尝试了一些代码,它可以连接到 Wifi。我的 PC 甚至 Raspberry Pi 都可以连接到它,但是当我尝试使用我的智能手机时,我就是没有用。
这是我的 Android 代码:
mainActivity.jre
connectButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!IPAddress.getText().equals("") || IPAddress.getText() != null || !portNumber.getText().equals("") || portNumber.getText() != null){
return;
}
IPaddresse= IPAddress.getText().toString();
port=Integer.parseInt(portNumber.getText().toString());
try {
client = new Socket(IPaddresse,port);
pw = new PrintWriter(client.getOutputStream());
dataOutputStream= new DataOutputStream(client.getOutputStream());
msg.setText("Verbunden!");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
ESP32代码:
#include <WiFi.h>
const char* ssid="Name";
const char* password="password";
WiFiServer server(80 );
void setup() {
Serial.begin(115200);
Serial.println("start");
delay(1000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
while (client.connected()) {
while (client.available()>0) {
char c = client.read();
client.write(c);
}
Serial.println(client.localIP());
delay(10);
}
}
}
对不起我的英语。我的代码并不是最好的,我刚开始编写代码
谢谢
首先,在 ESP32 上,我建议您将 mDNS 添加到您的设置中,这样您就可以在网络上为您的 esp 命名,就像您为 esp 命名一样 pietje 那么您可以在您的网络上以 pietje.local 的形式找到它。
这似乎无法与套接字 class 一起正常工作,但也许我做了一些工作。它没有找到它的IP。这是第一次使用套接字。所以我学到了一些新东西。
我试过你的例子,但确实是我的错。通过一些简短的搜索,我找到了这个网站:
https://www.tutorialspoint.com/sending-and-receiving-data-with-sockets-in-android
通过在线程中添加套接字创建,它确实对我有用。
希望对你有所帮助。
所以我得到了我的 ESP32 并想做一些项目,我想用 Android 应用程序控制它们,例如 LED 条纹。我已经用我的 Raspberry Pi 做到了,它运行得很好。 我已经尝试了一些代码,它可以连接到 Wifi。我的 PC 甚至 Raspberry Pi 都可以连接到它,但是当我尝试使用我的智能手机时,我就是没有用。 这是我的 Android 代码: mainActivity.jre
connectButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!IPAddress.getText().equals("") || IPAddress.getText() != null || !portNumber.getText().equals("") || portNumber.getText() != null){
return;
}
IPaddresse= IPAddress.getText().toString();
port=Integer.parseInt(portNumber.getText().toString());
try {
client = new Socket(IPaddresse,port);
pw = new PrintWriter(client.getOutputStream());
dataOutputStream= new DataOutputStream(client.getOutputStream());
msg.setText("Verbunden!");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
权限:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
ESP32代码:
#include <WiFi.h>
const char* ssid="Name";
const char* password="password";
WiFiServer server(80 );
void setup() {
Serial.begin(115200);
Serial.println("start");
delay(1000);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
}
Serial.println("Connected to the WiFi network");
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
while (client.connected()) {
while (client.available()>0) {
char c = client.read();
client.write(c);
}
Serial.println(client.localIP());
delay(10);
}
}
}
对不起我的英语。我的代码并不是最好的,我刚开始编写代码 谢谢
首先,在 ESP32 上,我建议您将 mDNS 添加到您的设置中,这样您就可以在网络上为您的 esp 命名,就像您为 esp 命名一样 pietje 那么您可以在您的网络上以 pietje.local 的形式找到它。
这似乎无法与套接字 class 一起正常工作,但也许我做了一些工作。它没有找到它的IP。这是第一次使用套接字。所以我学到了一些新东西。
我试过你的例子,但确实是我的错。通过一些简短的搜索,我找到了这个网站:
https://www.tutorialspoint.com/sending-and-receiving-data-with-sockets-in-android
通过在线程中添加套接字创建,它确实对我有用。
希望对你有所帮助。