0

我使用 RXTX 库找到了这个示例。它工作正常,但我试图了解它是如何工作的。这是代码块。

public static class SerialReader implements Runnable 
        {
            InputStream in;
            Robot robot;
            int x;
            int y;
            public SerialReader ( InputStream in , Robot robot)
            {
                this.in = in;
                this.robot = robot;
            }

            public void run ()
            {
                byte[] buffer = new byte[1024];
                int len = -1;
                try
                {
                    while ( ( len = this.in.read(buffer)) > -1 )
                    {

                        System.out.print(new String(buffer,0,len));

                    }
                }
                catch ( IOException e )
                {
                    e.printStackTrace();
                }            
            }
        }

我想了解的是while循环。看起来它从输入流加载缓冲区,但由于 RS-232 一次发送一个字节,我很困惑。我想要实现的是获得打印出的结果的整数表示。

4

1 回答 1

0

它有什么令人困惑的地方?即使一次发送一个字节的数据,也可以在缓冲区中累积一系列字节,因此您可以一次读取整个序列。值 len 是已接收到的序列中的字节数。您处理接收到的数据的方式可以更改以反映您的期望。尝试例如替换这个

System.out.print(new String(buffer,0,len));

有了这个:

StringBuffer sb = new StringBuffer();
for (int i = 0; i < len; i++) {
    sb.append(String.valueOf(buffer[i]));
}
System.out.print(sb.toString());
于 2013-05-11T18:41:58.623 回答