7

我首先尝试使用 javax.comm 连接到串行端口(COM4)。它甚至没有打开串口。

然后我尝试使用 rxtx 库(rxtx-2.2pre2)进行连接。它连接并写入数据,但不从串口读取任何数据。

是否有任何 JDK/平台依赖项来使用 javax.comm 或 rxtx 库?

我正在使用

4

3 回答 3

1

我尝试了这段代码并成功了。您需要随身携带三个文件:

comm.jar
javax.comm.properties
win32com.dll

并且您需要将这些文件放在特定目录中:

comm.jar
in /java/jre6/lib/ext ,  /java/jdk_1.6.0.20/jre6/lib/ext , java/jdk_1.6.0.20/lib

win32com.dll
in /java/jre6/bin, /java/jdk_1.6.0.20/bin,  /windwos/System32

javax.comm.properties
in /java/jdk_1.6.0.20/lib, java/jre/lib , /java/jdk_1.6.0.20/jre/lib
于 2012-05-28T12:27:38.517 回答
1

我建议尝试 purejavacomm:http ://www.sparetimelabs.com/purejavacomm/index.html

它是用纯java + JNA编写的javax.comm的实现,彻底解决了我在Windows和Linux之间的可移植性问题。它也应该可以在 OSX 或 FreeBSD 上运行(还没有尝试过),并且应该很容易移植到 JNA 支持的其他 OS-es,例如 Solaris。

另一个好处是您不需要像使用 rxtx 那样安装 DLL,而且它似乎没有 rxtx 有时在 Windows 上出现的某个 100% CPU 消耗错误。

于 2012-05-29T06:59:22.420 回答
1

经过一番挖掘,我能够通过明确设置流控制模式自己解决这个问题。即使您不需要流量控制,将其显式设置为有FLOWCONTROL_NONE帮助。

Linux 上不需要相同的调用。

如果您将流控制设置为硬件,我认为还需要显式设置 RTS 才能在此模式下获取通知。(未验证)。

于 2012-05-22T13:24:54.923 回答