This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes I/O and Streams and the fly likes Cant understand why... Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » I/O and Streams
Bookmark "Cant understand why..." Watch "Cant understand why..." New topic
Author

Cant understand why...

Jessid Leon Velez Gutierrez
Greenhorn

Joined: Dec 04, 2006
Posts: 22
Hello. I am sorry for asking this thing, but I cant understand why this code works the way it does. This is a segment of a program to read the serial port that I extracted from http://rxtx.qbang.org/wiki/index.php/Examples. My question is about this while...cant understand how it works.

Thanks a lot!

public static class SerialReader implements Runnable {
InputStream in;

public Lector( InputStream in ) {
this.in = in;
}

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));
//System.out.println("La longitud del buffer es: " + len);
}
System.out.println("alguna cosa");
} catch ( IOException e ) {
e.printStackTrace();
}
}
}
Joe Ess
Bartender

Joined: Oct 29, 2001
Posts: 8834
    
    7

Originally posted by Jessid Leon Velez Gutierrez:
I cant understand why this code works the way it does.


Maybe you could clue us in to what the code does. This code will not execute as a stand-alone program so we can't see for ourselves.
What do you expect the code to do and why does it not meet your expectations?


"blabbing like a narcissistic fool with a superiority complex" ~ N.A.
[How To Ask Questions On JavaRanch]
Jessid Leon Velez Gutierrez
Greenhorn

Joined: Dec 04, 2006
Posts: 22
Hi. Thanks for the interest. What the program does is just read a serial port,and prints the characters you send to the PC in the command line. I was expecting that the while statement run only once and exited when len = -1, due to the lack of chars in the buffer, and when I sent new data, it didnt print it in the command line, but it never goes out the while...and that is what I cant understand well: why is that a never ending while. i think i havent understood well all this stuff of streams....i better begin to study again, jijiji

Thanks again!

English is not my native language. I hope I have not made a lot of mistakes, or at least the idea was transmitted
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 14074
    
  16

What is the InputStream? Is it a special kind of InputStream that reads data from a serial port?

Maybe the input stream never returns -1; maybe, if no data available, it just blocks until data is available. Look it up in the documentation of the serial port communications package that you're using.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Cant understand why...
 
Similar Threads
Command line arguments
Two way communcation with the serial port (modem to modem)
using byte array to copy contents of one file to another
copying contents of one file to another
Communicating over a virtual COM port