Я использую плату Nucleo и ESP8266 вместе.И я хочу подключить эту плату к Android и получать данные.Плата действует как сервер, а Android действует как клиент и подключается к модулю WiFi на плате, используя IP и номер порта.Когда Android запрашивает передачу данных на плату, плата каждую секунду отправляет в Android 1024 данных типа char.Нет проблем с подключением Wi-Fi, а передача данных с Android на плату работает нормально.Но когда плата отправляет данные на Android, возникает проблема.Wi-Fi не работает, пока Android получает данные.
Сообщение об ошибке выглядит следующим образом:
2018-09-28 20:29:22.213 29848-30065/? D/####: Rcv : [B@3bcd427
2018-09-28 20:29:22.367 29848-30065/? D/####: Rcv : [B@d3466d4
2018-09-28 20:29:22.522 29848-30065/? D/####: Rcv : [B@29c907d
2018-09-28 20:29:34.830 29848-30065/? W/System.err: java.net.SocketException: Software caused connection abort
2018-09-28 20:29:34.830 29848-30065/? W/System.err: at java.net.SocketInputStream.socketRead0(Native Method)
2018-09-28 20:29:34.830 29848-30065/? W/System.err: at java.net.SocketInputStream.read(SocketInputStream.java:151)
2018-09-28 20:29:34.830 29848-30065/? W/System.err: at java.net.SocketInputStream.read(SocketInputStream.java:120)
2018-09-28 20:29:34.830 29848-30065/? W/System.err: at java.net.SocketInputStream.read(SocketInputStream.java:106)
2018-09-28 20:29:34.830 29848-30065/? W/System.err: at www.smart_pro.co.kr.wifiapp.ConnectActivity$TcpReadThread.run(ConnectActivity.java:136)
Других ошибок, кроме этой, нет.
Я думаюдоска отправляет много данных.Но я не могу уменьшить объем данных.Потому что эти данные являются важными данными.Эти данные являются данными вибрации.Мне нужно нарисовать диаграмму FFT, используя эти данные.Как я могу получить все данные, не уменьшая их?
Вот код для получения данных с Android.
private class TcpReadThread extends Thread {
private final InputStream tcpInStream;
public TcpReadThread() {
InputStream tmpIn = null;
try {
tmpIn = socket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
tcpInStream = tmpIn;
}
@Override
public void run() {
super.run();
byte[][] Rcv = (byte[][]) Array.newInstance(Byte.TYPE, new int[]{100, 4096});
byte Index = (byte) 0;
while (isRun) {
int readDataSize = 0;
try {
readDataSize = tcpInStream.read(Rcv[Index]);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
if (readDataSize == -1) {
isRun = false;
} else if (readDataSize > 0) {
Log.d("####", "Rcv : " + Rcv[Index]);
if (Index >= (byte) 99) {
Index = (byte) 0;
} else {
Index = (byte) (Index + 1);
}
}
}
}
}
Спасибо за вашу помощь.