问题描述
所以我得到了我的 ESP32 并想做一些 Porjects,我想用 Android 应用程序控制它们,例如 LED Stripes。我已经用我的 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 的形式找到它。
这似乎不能与套接字类一起正常工作,但也许我做了一些工作。它没有找到它的IP。这是第一次使用套接字。所以我学到了一些新东西。
我试过你的例子,它确实是我的错。通过一些简短的搜索,我找到了这个网站:
https://www.tutorialspoint.com/sending-and-receiving-data-with-sockets-in-android
通过在线程中添加套接字创建,它确实对我有用。
希望这对您有所帮助。