解码[]字节时,我只得到了字符���。

问题描述 投票:0回答:1

我试图从arduino BT解码一个[]字节,我得到了完美的连接,问题是当我试图解码数组时,我得到的是这个字符。我尝试使用ASCII字符集,但还是同样的问题。我使用的是UTF-8格式的android studio。

谁能告诉我发生了什么事,好吗?

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() );
            }
        }

输入流:输入流。

 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查看我收到的字符。

java android-studio arduino inputstream decoding
1个回答
0
投票

在Arduino方面,你应该使用char作为发送格式。

Serial.write 将二进制数据写入串口。这些数据是以字节或一系列字节的形式发送的。

所以简单地尝试解码

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

不知道安卓上的命令,我猜Arduino口语中的字节是char,而不是二进制数据。而且一定要把用过的代码都贴出来!

© www.soinside.com 2019 - 2024. All rights reserved.