network programming - Reading data from serial port in java -


i want read data (which weight ) weigh bridge connected computer com1 port. search web , able connect port , read data problem data not meaning full.

i getting below

enter image description here

there weight of 145 on weigh bridge getting these symbols. here code reading data.

/*  * change template, choose tools | templates  * , open template in editor.  */ package readingports;  import java.io.bufferedinputstream; import java.io.bufferedreader; import java.io.inputstream; import java.io.inputstreamreader; import java.util.enumeration; import javax.comm.commportidentifier; import javax.comm.serialport; import javax.comm.serialportevent; import javax.comm.serialporteventlistener;  /**  *  * @author iamusman  */ public class readingports implements serialporteventlistener, runnable {      static commportidentifier portid;     static enumeration portlist;     static serialport port;     static inputstream inputstream;     static thread readthread;     static byte buffer[];     static bufferedreader br;      /**      * @param args command line arguments      */     public static void main(string[] args) {         // todo code application logic here         portlist = commportidentifier.getportidentifiers();         while (portlist.hasmoreelements()) {             portid = (commportidentifier) portlist.nextelement();             if (portid.getporttype() == commportidentifier.port_serial) {                 if (portid.getname().equals("com1")) {                     if (!portid.iscurrentlyowned()) {                         readingports rp = new readingports();                     } else {                         system.out.println("this port used other program");                     }                  }             }         }     }      public readingports() {         try {             port = (serialport) portid.open("custom", 500);             inputstream = port.getinputstream();             br = new bufferedreader(new inputstreamreader(inputstream));             system.out.println("** connected com6 **");             port.addeventlistener(this);             port.notifyondataavailable(true);             port.setserialportparams(9600, serialport.databits_8, serialport.stopbits_1, serialport.parity_none);             port.setflowcontrolmode(serialport.flowcontrol_none);             port.enablereceivetimeout(500);             system.out.println("................................");             readthread = new thread(this);             readthread.start();         } catch (exception ex) {             ex.printstacktrace();         }     }      public void serialevent(serialportevent event) {          switch (event.geteventtype()) {              case serialportevent.data_available:                 buffer = new byte[8];                 try {                     while (inputstream.available() > 0) {                         int numbytes = inputstream.read(buffer);                         system.out.println(new string(buffer,0,numbytes));                     }                 } catch (exception ex) {                     ex.printstacktrace();                 }                  break;          }         }      @override     public void run() {         try {             system.out.println("in run");             thread.sleep(2000);         } catch (exception ex) {             ex.printstacktrace();;         }      } } 

hyper terminal reads correct data.

enter image description here

after understand code, maybe can modify code this:

case serialportevent.data_available:             try {                  string inputline=br.readline();                  system.out.println(inputline);             } catch (exception ex) {                 system.err.println(e.tostring());             }              break; 

and move 2 line below port.setserialportparams:

        inputstream = port.getinputstream();         br = new bufferedreader(new inputstreamreader(inputstream)); 

Comments