Hi,

I'm currently using the Apache MINA 2.0.0-RC1 build. The problem I am having
is receiving messages after sending data to a device serially. I have
verified that I should be receiving data through the use of other serial
utility programs as well as using Java's "gnu.io.*"  library. The code is
here:

*(Note1: This is based off of the serial tutorial on your site. The second
source after SerialClient.java  is the Handler (SerialHandler.java) class
that extends IoHandlerAdapter. The code below should compile and run on java
1.6.)*
*

**(Note2: I'm emailing you this since I'd rather use your Serial API which
is much cleaner. I am currently using the TCP and eventually UDP API's for
the same project and They are excellent for quick development. So, thanks.)*
*



///////**BEGIN SERIALCLIENT/////////////////////*
package com.esys.sts.device.monitor.serial.client;

import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.service.IoConnector;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.serial.SerialAddress;
import org.apache.mina.transport.serial.SerialConnector;
import org.apache.mina.transport.serial.SerialAddress.DataBits;
import org.apache.mina.transport.serial.SerialAddress.FlowControl;
import org.apache.mina.transport.serial.SerialAddress.Parity;
import org.apache.mina.transport.serial.SerialAddress.StopBits;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;


import com.esys.sts.device.monitor.helper.Printer;
import com.esys.sts.device.monitor.tcp.filter.CodecFactory;





public class SerialClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        IoConnector connector = new SerialConnector();
        connector.setHandler( new SerialHandler());
         connector.getFilterChain().addLast("codec", new
ProtocolCodecFilter(
                    new TextLineCodecFactory()));
        SerialAddress portAddress = new SerialAddress( "COM1", 115200,
DataBits.DATABITS_8, StopBits.BITS_2, Parity.NONE, FlowControl.NONE );
        ConnectFuture future = null;
        try {
            future = connector.connect( portAddress ).await();
        } catch (InterruptedException e1) {
            Printer.printException(SerialClient.class, e1);
        }

            future.awaitUninterruptibly();


        IoSession session = future.getSession();
        //Printer.println(""+session.getRemoteAddress());
        connector.broadcast(">20WFFFFD1\r\n");
        //connector.broadcast(">01L2DF\r\n");

        //Printer.println(""+session.getReadMessages());
    }
}
*///////END SERIALCLIENT//////////////////////////////////////

*






*
///////BEGIN SERIALHANDLER//////////////////////////////////////*
package com.esys.sts.device.monitor.serial.client;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;

import com.esys.sts.device.monitor.exceptions.UndefinedMethodException;
import com.esys.sts.device.monitor.helper.Printer;

public class SerialHandler extends IoHandlerAdapter {

    @Override
    public void exceptionCaught(IoSession ioSession, Throwable arg1)
            throws Exception {
        Printer.printException(SerialHandler.class, arg1);

    }

    @Override
    public void messageReceived(IoSession ioSession, Object message) throws
Exception {
        Printer.println("messageReceived");
        Printer.println((String) message);
    }

    @Override
    public void messageSent(IoSession ioSession, Object message) throws
Exception {
        Printer.println("messageSent: " + (String)message);

    }

    @Override
    public void sessionClosed(IoSession ioSession) throws Exception {


    }

    @Override
    public void sessionCreated(IoSession ioSession) throws Exception {

        Printer.println("sessionCreated");
    }

    @Override
    public void sessionIdle(IoSession ioSession, IdleStatus idleStatus)
throws Exception {

        Printer.println( "IDLE " + ioSession.getIdleCount( idleStatus ));
    }

    @Override
    public void sessionOpened(IoSession ioSession) throws Exception {
        Printer.println("sessionOpened");

    }

}
*///////END SERIALHANDLER//////////////////////////////////////
*


- josh

Reply via email to