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 は一度に 1 バイトずつ送信するため、混乱しています。私が達成しようとしているのは、出力される結果の整数表現を取得することです。

4

1 に答える 1

0

それについて何が混乱していますか?データは一度に 1 バイトずつ送信されますが、一連のバイトがバッファに蓄積される可能性があるため、一度にシーケンス全体を読み取ることができます。値 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 に答える