0

我正在使用 net beans 7 ide 和 java 6 来开发我的 java 项目。我使用以下编码从串口读取值:

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();
    JOptionPane.showMessageDialog(null, "portList :"+portList.hasMoreElements()); 
    while (portList.hasMoreElements()) {
      portId = (CommPortIdentifier) portList.nextElement();
      if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
       if (portId.getName().equals("COM3")) {
      //                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;
  }
}
}

当我从 netbeans 执行时,JOptionPane 显示“portList:true”,但是当我双击 jar 文件并尝试运行时,JOptionPane 显示“portList:false”

为什么有不同的输出试图执行相同的 java 代码

4

0 回答 0