Неправильное считывание данных Bluetooth для Android (ESP-32) - PullRequest
0 голосов
/ 25 февраля 2019

Я использую связь ESP-32 Bluetooth, но когда я посылаю последовательные данные, они показывают данные мусора в Android Studio.Но отправка сообщения через Android на Arduino это нормально.Только RX андроида делает ошибки.Я пробую другое приложение, которое есть в PlayStore, и оно отлично работает как на RX, так и на TX

android Activity.java

 handler = new Handler() {
                public void handleMessage(android.os.Message msg) {

                    switch (msg.what) {
                        case RECIEVE_MESSAGE:                                                     // if receive massage
                            byte[] readBuf = (byte[]) msg.obj;
                            String strIncom = new String(readBuf, 0, msg.arg1);                 // create string from bytes array
                           // Log.d(TAG, strIncom+"hhh");
                            sb.append(strIncom);                                                // append string
                            int endOfLineIndex = sb.indexOf("\n");                            // determine the end-of-line
                            if (endOfLineIndex > 0) {                                            // if end-of-line,
                                String sbprint = sb.substring(0, endOfLineIndex);
                               // sb.setLength(0);
                                // extract string
                                sb.delete(0, sb.length());                                      // and clear
                                textView.setText("Data from Arduino: " + sbprint );            // update TextView
                                Log.d(TAG, sbprint);
                            }
                            Log.d(TAG, "...String:"+ sb.toString() +  "Byte:" + msg.arg1 + "...");

                            break;
                    }
                }
            };
private class ConnectedThread extends Thread {
        private final InputStream mInStream;
        private final OutputStream mOutStream;

        public ConnectedThread(BluetoothSocket socket) {
            InputStream tmpIn = null;
            OutputStream tmpOut = null;

            // Get the input and output streams, using temp objects because
            // member streams are final
            try {
                tmpIn = socket.getInputStream();
                tmpOut = socket.getOutputStream();
            } catch (IOException e) { }

            mInStream = tmpIn;
            mOutStream = tmpOut;
        }

        public void run() {
            byte[] buffer = new byte[256];  // buffer store for the stream
            int bytes; // bytes returned from read()

            // Keep listening to the InputStream until an exception occurs
            while (true) {
                try {
                    // Read from the InputStream
                    bytes = mInStream.read(buffer);        // Get number of bytes and message in "buffer"
                    handler.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();     // Send to message queue Handler
                 //   handler.handleMessage(new Message());
                } catch (IOException e) {
                    break;
                }
            }
        }

        /* Call this from the main activity to send data to the remote device */
        public void write(String message) {
            Log.d(TAG, "...Data to send: " + message + "...");
            byte[] msgBuffer = message.getBytes();
            try {
                mOutStream.write(msgBuffer);
            } catch (IOException e) {
                Log.d(TAG, "...Error data send: " + e.getMessage() + "...");
            }
        }
    }

    }

Seraial Input: Hello Output: иногда "heo" "hll "

Может кто-нибудь подсказать мне, где я делаю не так

...