Java串行读取器

时间:2013-05-11 17:55:24

标签: java serial-port

我使用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一次发送一个字节,我很困惑。我想要实现的是获得打印出来的结果的整数表示。

1 个答案:

答案 0 :(得分: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());