Когда я использую TCP для отправки данных с платы на Android, Wifi отключается - PullRequest
0 голосов
/ 28 сентября 2018

Я использую плату 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);
                }
            }
        }
    }
}

Спасибо за вашу помощь.

...