Serial Tutorial

With the upcoming MINA 2.0 you are able to connect to serial port like you use to connect to a TCP/IP port with MINA.

Getting MINA 2.0

For now MINA 2.0 isn't released, so you will have to build it yourself from apache subversion server.  If you need assistance in building MINA from the trunk, please consult the Developer Guide.

Connecting to a serial port

Serial communication for MINA provide only an IoConnector, due to the point-to-point nature of the communication media.

At this point you are supposed to have already read the MINA tutorial.

Now for connecting to a serial port you need a SerialConnector :

// create your connector
IoConnector connector = new SerialConnector()
connector.setHandler( ... here your buisness logic IoHandler ... );

Nothing very different of a SocketConnector.

Let's create an address for connecting to our serial port.

SerialAddress portAddress=new SerialAddress( "/dev/ttyS0", 38400, 8, StopBits.BITS_1, Parity.NONE, FlowControl.NONE );

The first parameter is your port identifier. For Windows computer, the serial ports are called "COM1", "COM2", etc... For Linux and some other Unix : "/dev/ttyS0", "/dev/ttyS1", "/dev/ttyUSB0".

The remaining parameters are depending of the device you are driving and the supposed communications characteristics.

  • the baud rate
  • the data bits
  • the parity
  • the flow control mecanism

Once it's done, connect the connector to the address :

ConnectFuture future = connector.connect( portAddress );
future.await();
IoSession sessin = future.getSession();
Useful Information

Before accessing serial port from a Java program you need a native library (.DLL or .so depending of your OS). MINA use the one from RXTX.org : ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip just put the good .dll or .so in the jre/lib/i386/ path of your JDK/JRE or use the -Djava.library.path= argument for specify where you placed the native libraries

And voila ! Everything else is as usual, you can plug your filters and codecs.

for learn more about RS232 : http://en.wikipedia.org/wiki/RS232

Added by Julien Vermillard, last edited by Mark Webb on May 29, 2007  (view change)