java - 使用 Android 从 ESP32 Socket 服务器接收数据
问题描述
我正在尝试使用 Android 应用从我的 ESP32 接收数据。从我的手机发送数据不是问题。我只是什么都得不到。它没有显示异常,也没有显示消息。到目前为止我的代码:
//In the onCreate method:
Connection connection = new Connection();
connection.execute();
//The Connection:
class Connection extends AsyncTask<Void,Void,Void> {
String msg;
@Override
protected Void doInBackground(Void...params){
try{
client = new Socket("ESP32-1",80);
input = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println(input.readLine());
}catch (UnknownHostException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
while (true) {
try {
msg=input.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(msg);
}
}
}
权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
ESP32(在 Arduino IDE 中):
#include <WiFi.h>
const char* ssid="Jack-2.4";
const char* password="QayWsxEdcRfv123456#";
WiFiServer server(80);
void setup() {
//Server
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) {
Serial.println("Client connected");
while (client.connected()) {
client.write('A');
delay(500);
}
}
}
我检查了 ESP32 代码是否写入并且它确实发送了消息。有什么我想念的吗?
解决方案
您的 Android 代码正在调用input.readLine()
,但您的 ESP32 代码只发送一个字符,而不是一行,因此客户端当然不会显示任何输入。尝试发送一条线路。
client.writeln('A');
或者
client.write("A\n");
第二个版本中的字符串可能需要是"A\r\n"
; 我不是 100% 清楚 Android 会认为什么是线路终结者。
推荐阅读
- python - 在一段时间内返回与起点不同的行
- java - 我的带有 3 个 servlet 的应用程序在 Tomcat 上运行良好,但是当我尝试在 Docker 中将它作为容器运行时显示 404 错误
- python - 在数据框上应用 dask map_overlap
- c# - 将 CSV 文件移动到数据库
- reactjs - 身份池未获得我指定的权限
- javascript - 多个后代选择器,错误或误解?
- python - 关于dict计算的问题
- java - 在stack.pop()之后有什么办法保留元素吗?
- python - 根据要拆分的关键字将行移动到新列中
- c - 如何使用堆栈以与输入顺序相反的顺序打印?