Декодирование [] байтов я получаю только символы ����� - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь декодировать [] байт из Arduino BT, я получил соединение отлично, проблема в том, когда я пытаюсь декодировать массив. все, что я получаю, это этот символ � (такое же количество отправленных байтов). Я думаю, что проблема в декодировании. Я пытаюсь с ASCII-кодировкой, но все та же проблема. Я использую android студию, настроенную в формате UTF-8.

Может кто-нибудь сказать мне, что происходит, пожалуйста? OutputStream:

public void write(byte[] bytes) {

            String text = new String(bytes, StandardCharsets.US_ASCII);

            Log.d(TAG, "write: Writing to outputstream: " + text);
            try {
                mmOutStream.write(bytes);
                Log.d(TAG, "write: Writing to outputstream: " + bytes);
            } catch (IOException e) {
                Log.e(TAG, "write: Error writing to output stream. " + e.getMessage() );
            }
        }

InputStream:

 public void run (){
            byte [] buffer = new byte[1024];

            int bytes;

            while(true){
                try {
                    bytes = mmInStream.read(buffer);

                    String incomingMessage = new String (buffer,0,bytes, StandardCharsets.US_ASCII);
                    Log.d(TAG,"InputStream: " + incomingMessage);


                    Intent incomingMessageIntent = new Intent("incommingMessage");
                    incomingMessageIntent.putExtra("El mensaje", incomingMessage);
                    Log.d(TAG,"Mensaje enviado a la main actv " + incomingMessage);

                    LocalBroadcastManager.getInstance(mContext).sendBroadcast (incomingMessageIntent);


                } catch (IOException e) {
                    Log.e(TAG,"Error leyendo Imputstream"  +e.getMessage());

                    break;
                }
            }
        }

Logcat, чтобы увидеть символ, который я получаю:

1 Ответ

0 голосов
/ 30 апреля 2020

Со стороны Arduino вы должны использовать char в качестве формата отправки.

Serial.write Записывает двоичные данные в последовательный порт. Эти данные отправляются в виде байта или серии байтов

Так что просто попробуйте декодировать

Serial.print("1234ABCD\r\n");

Не зная команд на Android Я думаю, что байты в Arduino говорят, что это символ, а не двоичный данные. И всегда размещайте весь использованный код!

...