我有一个要求,我必须读取串行端口上的数据流。我正在使用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 :(得分: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();
答案 1 :(得分: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
答案 2 :(得分:0)
我正在使用ubuntu而我的电脑没有任何串行/并行端口,但我需要开发它。
在这种情况下,您需要模拟此端口。
我的回答: