2012-05-16 67 views
3

最后设法从windows中读取rxtx,但现在我不能使它在Ubuntu中工作。我使用apt-get获得rxtx库,但是当我运行应用程序时,我看不到任何东西,尝试了几个try-catch块,我甚至没有得到例外,并且由于现在基于Ubuntu的调试是不可能的,所以我不能确定问题。 (Ubuntu是12.04 64位)。RXTX不能在ubuntu工作

import gnu.io.*; 
import java.io.*; 
import javax.swing.JOptionPane; 

public class ReadComPort { 

    public static void main(String[] s) { 
     readcomport(); 
    } 

    public static String readcomport() { 
     String value = null; 

     try { 
      // CommPortIdentifier portIdentifier = CommPortIdentifier 
      // .getPortIdentifier("COM1"); 

      // String comportidentifier = "COM1"; //*win 
      String comportidentifier = "/dev/ttyS0"; 

      CommPortIdentifier portIdentifier = null; 
      portIdentifier = CommPortIdentifier.getPortIdentifier(comportidentifier); 

      if (portIdentifier.isCurrentlyOwned()) { 
       JOptionPane.showMessageDialog(null, "port in use"); 
      } else { 

       SerialPort serialPort = (SerialPort) portIdentifier.open("ReadComPort", 500); 
       JOptionPane.showMessageDialog(null, serialPort.getBaudRate()); 

       serialPort.setSerialPortParams(serialPort.getBaudRate(), SerialPort.DATABITS_8, SerialPort.STOPBITS_1, 
         SerialPort.PARITY_NONE); 
       // serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT); 
       serialPort.setDTR(true); 
       serialPort.setRTS(true); 

       InputStream mInputFromPort = serialPort.getInputStream(); 

       Thread.sleep(500); 
       byte mBytesIn[] = new byte[32]; 
       mInputFromPort.read(mBytesIn); 

       value = new String(mBytesIn); 

       mInputFromPort.close(); 
       serialPort.close(); 
      } 
     } catch (Exception ex) { 
      JOptionPane.showMessageDialog(null, "Exception : " + ex.getMessage()); 

     } 

     return value; 

    } 
} 
+0

是否在类路径中添加了rxtx库。我发现你没有在你的java文件中导入适当的类。 –

+0

RXTXcomm.jar文件被添加到构建路径... – Sin5k4

回答

1

检查配置文件javax.comm.properties是否在类路径上。由于这个文件,我对RXTX有无尽的问题 - 它只是默默地失败。

+0

erm似乎无法找到它...它通常位于何处? – Sin5k4

+0

啊。那可能就是问题了。在这里检查:http://pradnyanaik.wordpress.com/2009/04/07/communicating-with-ports-using-javaxcomm-package-for-windows/ - 您可能需要找到一个javax-comm包,其中包含属性文件 – mcfinnigan

+0

OK找到一个包含3个文件的rar文件,其中一个是.properties文件。我如何添加它?从构建路径/配置构建路径菜单? – Sin5k4

1

昨天我有同样的问题,结果发现this

String serialPortID = "/dev/ttyAMA0"; 
System.setProperty("gnu.io.rxtx.SerialPorts", serialPortID); 

Thath是,你需要设置gnu.io.rxtx.SerialPorts系统属性,和值应该是你要打开的端口的名称。

+0

你能指出如何设置'gnu.io.rxtx.SerialPorts'系统属性吗? – gkiko

+0

这就是我在代码中做的:'System.setProperty(“gnu.io.rxtx.SerialPorts”,serialPortID);' –

+0

谢谢,这对我很有用。 – Alex