繁体   English   中英

ESP32 Wifiserver 和 Android Appp

[英]ESP32 Wifiserver and Android Appp

所以我得到了我的 ESP32 并想做一些项目,我想用 Android 应用程序来控制它们,例如 LED 条纹。 我已经用我的 Raspberry Pi 做到了这一点,它运行良好。 我已经尝试了一些代码,它可以连接到 Wifi。 我的电脑甚至 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。 这是第一次使用 sockets。 所以我学到了一些新东西。

我试过你的例子,它确实让我错了。 通过一些简短的搜索,我找到了这个网站: https://www.tutorialspoint.com/sending-and-receiving-data-with-sockets-in-android
通过在线程中添加套接字创建,它确实对我有用。

我希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM