1

我有一个要求,我必须读取串行端口上的数据流。我正在使用 javax.comm API。

当我尝试列出端口时,使用下面的代码我从来没有得到任何端口列表。

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

它返回假。

如果我缺少任何东西,谁能帮助我?


我的 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 建议一些 API,那就太好了。

非常感谢这方面的任何帮助。

4

3 回答 3

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(); 
于 2012-06-29T07:56:32.400 回答
0

请看: http ://www.intellog.com/blog/?p=255和http://www.coderanch.com/t/535173/Streams/java/CommPortIdentifier-getPortIdentifiers-empty(后者指向第一个)

Oracle 不提供 Windows 的二进制文件(假设您在 Windows 上):http ://www.oracle.com/technetwork/java/index-jsp-141752.html

于 2012-06-29T07:30:29.503 回答
0

我正在使用 ubuntu 并且我的计算机没有任何串行/并行端口,但我需要在其上进行开发。

在这种情况下,您需要模拟此端口。

我的答案:

在ubuntu上用java进行串口识别

于 2014-02-05T03:29:31.647 回答