2015-10-05 2 views
0

J'utilise ce code du site Web this mais je n'ai pas de sortie sur la console. Quelqu'un peut-il m'aider ce qui ne va pas?Obtenir des données à partir de COM4 en utilisant Javax.comm

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("COM4")) { 
      //    if (portId.getName().equals("/dev/term/a")) { 
        SimpleRead reader = new SimpleRead(); 
       } 
      } 
     } 
    } 

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

    public void run() { 
     try { 
      Thread.sleep(20000); 
     } catch (InterruptedException e) {System.out.println(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) {System.out.println(e);} 
      break; 
     } 
    } 
} 

Voici à quoi ressemble la sortie sur la console.

enter image description here

Je suis sûr que mon port COM est 4 et tous les autres détails. Je ne sais juste pas quelle est la cause de la fin.

Répondre

0

Eh bien, comme nous pouvons le voir, vous n'avez obtenu aucune exception et vous n'avez pas de données à lire. Essayez de mettre au point ou de mettre System.out.println dans votre code, juste pour suivre l'exécution.