2

InputStream inputFromPort;

    try {
        inputFromPort = serial.getInputStream();  //SerialPort

        b=new byte[20];

        inputFromPort.read(b);

        reading=new String(b,"UTF-8");

        System.out.println(reading.length());

        System.out.println("new message: " + reading);

        inputFromPort.close();

        serial.close();         
    } 

结果:新消息:你好,世界!-> 六个框符号没问题 ->(我不能在这里复制)我知道它们出现是因为 b 的长度大于“你好,世界!”,如果我知道收到的大小,那就太好了消息,所以我可以在那个大小上初始化字节数组 b

4

1 回答 1

2

检查返回值inputFromPort.read(b);

 int readLength = inputFromPort.read(b);

然后你必须只用接收到的字节创建你的字符串,这是调用实际写入的字节数组的一部分read()

String reading = new String(b, 0, readLength, "UTF-8");

这样你就不会在“Hello, World!”之后出现“盒子符号”了。

于 2013-02-16T19:51:20.327 回答