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