Thursday, June 10, 2010

com port communication using java

NOTE: For step by step tutorial please click on this link -
COM PORT COMMUNICATION USING JAVA (RS232JAVA-1.0.0 API)

import gnu.io.*;
import java.io.*;

public class ComPortTest
{

/*
 * This program will connect to COM PORT Device and send TEST MESSAGE to it.
 * After sleeping for 500ms , It will read the response from SAME DEVICE.
 * copyright (c) 2011 http://www.jovialjava.blogspot.com
 * For detailed Tutorial please check it out - 
 * http://jovialjava.blogspot.com/2010/12/rs232-communication-using-java.html
 */
public boolean testComPort(String comPort, String testMessage){
    CommPortIdentifier portIdentifier = null;
    try{
        portIdentifier = CommPortIdentifier.getPortIdentifier(comPort);
        if (portIdentifier.isCurrentlyOwned())
        {
            System.out.println("Port in already in use, owner ["+ portIdentifier.getCurrentOwner()+"]");
            return false;
        }else{
            SerialPort serialPort = (SerialPort) portIdentifier.open("ListPortClass", 300);
            System.out.println("COM PORT NAME -["+portIdentifier.getName()+"] BAUD RATE ["+serialPort.getBaudRate()+"]" );
            serialPort.setSerialPortParams(300, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
            OutputStream mOutputToPort = serialPort.getOutputStream();
            InputStream mInputFromPort = serialPort.getInputStream();
            mOutputToPort.write(testMessage.getBytes());
            System.out.println("Byte Sent");
            mOutputToPort.flush();
            System.out.println("Waiting for response");
            Thread.sleep(500);
            byte mBytesIn [] = new byte[20];
            mInputFromPort.read(mBytesIn);
            String value = new String(mBytesIn);
            System.out.println("Response from Serial Device: "+value);
            mOutputToPort.close();
            mInputFromPort.close();
            serialPort.close();
            System.out.println("!!! ======================== COM PORT TEST - PASS =============================!!!");
            return true;
        }
    }catch(NoSuchPortException nspe){
            System.out.println("No such port ["+comPort+"] found on system "+ nspe.getMessage());
    }catch(PortInUseException piue){
            System.out.println("port ["+comPort+"] is already in use, owner["+ portIdentifier.getCurrentOwner()+"] "+piue.getMessage());
    }catch(UnsupportedCommOperationException ucoe){
            System.out.println("Setting Communciation Operations - 300, DataBits -"+ SerialPort.DATABITS_8+", StopBits "+ SerialPort.STOPBITS_1+", Parity "+ SerialPort.PARITY_NONE);
            System.out.println("Communication Operations are not supported on port ["+comPort+"] "+ ucoe.getMessage());            
    }catch(IOException ioe){
            System.out.println("IOExceptin while trying to communicate with COM PORT device "+ ioe.getMessage());
    }catch(InterruptedException ie){
            System.out.println("Interruption while waiting for response from COM Device "+ ie.getMessage());
    }
    return false;
}

    public static void main(String... args){
            new ComPortTest().testComPort("COM1", "JOVIAL JAVA");    
    }
}