2012-06-29 220 views
1

我有一個要求,我必須讀取串口上傳來的數據流。我正在使用javax.comm API。從串口讀取數據

當我嘗試列出端口,使用下面的代碼我永遠不會得到任何端口列表。

portList = CommPortIdentifier.getPortIdentifiers(); 
System.out.println("start: "+portList.hasMoreElements()); 

它返回false。

任何人都可以幫助我,如果我失去了什麼?


我的PS2端口沒有列入清單。有沒有其他方式可以列出PS2端口?

我完整的代碼如下,

while (portList.hasMoreElements()) { 
     portId = (CommPortIdentifier) portList.nextElement(); 
     System.out.println("portid: "+portId.getName()); 
    } 

輸出

portid: COM1 
portid: COM3 
portid: LPT1 

我的實際需求是讀取USB端口上的數據。我遇到了使用JUSB的問題,但沒有奏效。所以我決定把串口連接到USB轉換器並在串口上讀取。但是,市場上沒有這種可轉換的產品。

現在,想到另一項工作,我能夠得到一個PS2到USB轉換器。如果您可以幫助我列出使用Java的PS2端口並讀/寫它或在Windows平臺上提供相同的API,那將是非常好的。

在這方面的任何幫助,高度讚賞。

+0

您正在使用的javax.comm庫和你的系統是什麼?我正在使用rxtx,它運行良好。 – Salil

+0

我也使用rxtx,它也適用於我。缺少的東西是在與.dll文件相關的eclipse中的配置,如下面的鏈接所述,http://www.intellog.com/blog/?p=255 – Mayank

回答

2

看看RXTX

CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("/dev/tty1"); 
CommPort commPort = portIdentifier.open("owner-name", 2000); 
SerialPort serialport; 
if (commPort instanceof SerialPort) { 
    serialPort = (SerialPort)commPort; 
    serialPort.setSerialPortParams(rate, databits, stopbits, parity); 
} 
InputStream in = serialPort.getInputStream(); 
OutputStream out = serialPort.getOutputStream(); 
+0

感謝Ortang。我現在可以列出我的串行端口。 – Mayank

0

我使用Ubuntu和我的電腦沒有任何串行/ pararel端口,但我需要在它發展: 然後你可以使用類似的東西。

在這種情況下,您需要模擬此端口。

我的回答:

serial port identification with java on ubuntu