我怎样才能知道串口上收到的消息长度是多少?

时间:2013-02-16 19:49:41

标签: java buffer inputstream

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

1 个答案:

答案 0 :(得分:2)

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

 int readLength = inputFromPort.read(b);

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

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

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