完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在创建一个 android 客户端应用程序来与连接到 Arduino 的 ESp8266 进行通信。我似乎无法让套接字将数据传递给 ESP。我正在使用 Android studio 编写客户端应用程序,在调试时它显示为正在连接的套接字但是当我将数据发送到套接字服务器(ESP8266-01)时我没有收到任何响应并且连接到的串行监视器上没有打印任何内容ESP。附件是我通过 arduino IDE 编程的 ESP 代码。
代码:全选#include #include #include #include #include #include #include //ESP8266WiFiMulti WiFiMulti; ESP8266WebServer server = ESP8266WebServer(80); WebSocketsServer webSocket = WebSocketsServer(81); void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length) { switch(type) { case WStype_DISCONNECTED: Serial.printf("[%u] Disconnected!\n", num); break; case WStype_CONNECTED: { IPAddress ip = webSocket.remoteIP(num); Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], payload); // send message to client webSocket.sendTXT(num, "Connected"); } break; case WStype_TEXT: IPAddress ip = webSocket.remoteIP(num); Serial.printf("$%s?\n", payload); webSocket.sendTXT(num, payload,sizeof(payload),false); break; } } void setup() { //Serial.begin(921600); Serial.begin(115200); //Serial.setDebugOutput(true); Serial.println(); Serial.println(); Serial.println(); for(uint8_t t = 4; t > 0; t--) { Serial.printf("[SETUP] BOOT WAIT %d...\n", t); Serial.flush(); delay(1000); } Serial.println("Starting AP"); WiFi.mode(WIFI_AP); WiFi.softAP("Alpine_SIM_CNTRL","12345678"); Serial.println("AP Started"); //while(WiFiMulti.run() != WL_CONNECTED) { //delay(100); //Serial.println("Delayed"); //} Serial.println("Starting Socket"); // start webSocket server webSocket.begin(); webSocket.onEvent(webSocketEvent); Serial.println("Socket Started"); if(MDNS.begin("simcontrol")) { Serial.println("MDNS responder started"); } Serial.println("Starting Server"); //handle index server.on( "/", []() { server.send(200,"text/plain","You are connected"); }); server.begin(); Serial.println("Server Started"); //Add service to MDNS MDNS.addService("http", "tcp", 80); MDNS.addService("ws", "tcp", 81); } void loop() { webSocket.loop(); server.handleClient(); } 下面是 Android 代码中的异步任务: 代码:全选public class WriteToServer extends AsyncTask { Context context; Socket socket; public WriteToServer(MyTaskParams Params) { } @Override protected String doInBackground(MyTaskParams... params) { socket = null; DataInputStream in = null; DataOutputStream out = null; context = params[0].context; String command = params[0].cmd; String response = null; try { socket = new Socket("192.168.4.1",81); out = new DataOutputStream(socket.getOutputStream()); in = new DataInputStream(socket.getInputStream()); out.writeUTF(command); Log.i("Command","Command sent: " + command); while(in.available() > 0) { response = in.readUTF(); } } catch (IOException e) { e.printStackTrace(); Log.e("Error","There was an error writing to the socket. Thrown IO exception"); }finally { if(socket != null){ try{ Log.i("INFO","closing the socket"); socket.close(); }catch(IOException e){ e.printStackTrace(); } } if(in != null){ try{ in.close(); } catch (IOException e) { e.printStackTrace(); } } if(out != null){ try{ out.close(); } catch (IOException e) { e.printStackTrace(); } } } return response; }] 几天来我一直在为此苦思冥想,无法弄清楚为什么套接字不向 ESP8266 发送数据,反之亦然。附带说明一下,我将我的 PC 连接到 ESP 并输入 192.168.4.1:81/****,我得到了回复“这只是一个套接字服务器”。所以我知道套接字服务器已启动并正在运行。 |
|
相关推荐
1个回答
|
|
首先,请确保您的 Arduino 和 ESP8266 都可以正常工作,可以通过简单的示例代码验证。然后,您可以尝试以下步骤:
1. 检查 Android 应用程序中的网络权限是否正确,您可以在 AndroidManifest.xml 文件中进行查看和修改。 2. 确保您的 Android 应用程序连接到正确的 IP 地址和端口号,并且连接方式应与您的 ESP8266 服务器相同。 3. 检查您的 ESP8266 代码是否正确配置了 WebSocket 服务器,确保它可以接收和处理来自 Android 应用程序的数据。 4. 如果以上步骤都没有解决问题,请尝试使用其他网络库或现有的 WebSocket 库对 Android 应用程序进行调试。您可以使用 Chrome 浏览器的开发者工具来检查 WebSocket 连接的详细信息。 5. 在您的路由器中,确保 ESP8266 的 IP 地址是静态的,并且正确地开放了端口。 6. 最后,请确保您的 Arduino 代码能够正确解析来自 ESP8266 的 WebSocket 数据,并执行相应的操作。 希望这些步骤可以帮助您解决问题。如果没有解决,您可以提供更多详细信息,以便我们提供更好的解决方案。 |
|
|
|
只有小组成员才能发言,加入小组>>
179个成员聚集在这个小组
加入小组439 浏览 1 评论
1396 浏览 1 评论
608浏览 6评论
505浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
487浏览 5评论
489浏览 4评论
472浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-23 09:03 , Processed in 0.923186 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号