Link to home
Start Free TrialLog in
Avatar of skychan
skychan

asked on

socket com3 port reader

i want to read com3 port

i install javax.com version 2.0

but i try to this code (SimpleRead.java) I use jdeveloper

output is :Process exited with exit code 0.

Could you help me to  can read port

import java.io.*;
import java.util.*;
import javax.comm.*;

public class SimpleRead implements Runnable, SerialPortEventListener {
    static CommPortIdentifier portId;
    static Enumeration portList;

    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;

    public static void main(String[] args) {
        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                // if (portId.getName().equals("COM1")) {
                if (portId.getName().equals("/dev/term/a")) {
                    SimpleRead reader = new SimpleRead();
                }
            }
        }
    }

    public SimpleRead() {
        try {
            serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
        } catch (PortInUseException e) {}
        try {
            inputStream = serialPort.getInputStream();
        } catch (IOException e) {}
      try {
            serialPort.addEventListener(this);
      } catch (TooManyListenersException e) {}
        serialPort.notifyOnDataAvailable(true);
        try {
            serialPort.setSerialPortParams(9600,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);
        } catch (UnsupportedCommOperationException e) {}
        readThread = new Thread(this);
        readThread.start();
    }

    public void run() {
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {}
    }

    public void serialEvent(SerialPortEvent event) {
        switch(event.getEventType()) {
        case SerialPortEvent.BI:
        case SerialPortEvent.OE:
        case SerialPortEvent.FE:
        case SerialPortEvent.PE:
        case SerialPortEvent.CD:
        case SerialPortEvent.CTS:
        case SerialPortEvent.DSR:
        case SerialPortEvent.RI:
        case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
            break;
        case SerialPortEvent.DATA_AVAILABLE:
            byte[] readBuffer = new byte[20];

            try {
                while (inputStream.available() > 0) {
                    int numBytes = inputStream.read(readBuffer);
                }
                System.out.print(new String(readBuffer));
            } catch (IOException e) {}
            break;
        }
    }
}
ASKER CERTIFIED SOLUTION
Avatar of Manikandan Thiagarajan
Manikandan Thiagarajan
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of skychan
skychan

ASKER

import javax.comm.*;
import java.util.*;

public class gokdk {
  public static void main(String[] args) {
 
    Enumeration e = CommPortIdentifier.getPortIdentifiers();
  System.out.print(e.hasMoreElements());
    while(e.hasMoreElements())
 
      System.out.println(e.nextElement());
  }
}

print out : false
Avatar of Mayank S
It seems that for some reason, getPortIdentifiers () is not returning what it should - what is the output of this:

CommPortIdentifier obj = CommPortIdenfier.getPortIdentifier ( "COM3" ) ;
CommPort port = obj.open ( "MyApplication", 100 ) ;
System.out.println ( port.getName () ) ;
Girionis, isn't this happening a little too often? 'That' recommendation was not followed ;-) I wonder how somebody would work this code out if their code does not look like the one I posted.