串口写入和读取窗口无法正常工作

时间:2011-06-20 16:12:49

标签: java windows serial-port rxtx javax.comm


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

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

是否有使用javax.comm或rxtx库的JDK /平台依赖?

我正在使用
Windows XP SP3,
JDK 1.6.0_22,
rxtx-2.2pre2,
USB转串口适配器,
Portmon(由Microsoft) - 监控串口上的活动
超级终端 - 检查COM端口是否真的有效。
http://goo.gl/mNLNE - 用于检查读写的示例代码

如果您遇到类似我的类似问题,请告诉我。

感谢任何帮助!

谢谢, Ĵ

3 个答案:

答案 0 :(得分:1)

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

Linux上不需要同样的调用。

如果要将流量控制设置为硬件,我认为还需要显式设置setRTS以便在此模式下获取通知。 (未经核实)。

答案 1 :(得分: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

答案 2 :(得分:1)

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

它是用纯java + JNA编写的javax.comm的一个实现,完全解决了Windows和Linux之间的可移植性问题。它也应该适用于OSX或FreeBSD(尚未尝试过),并且应该很容易移植到JNA支持的其他操作系统,例如Solaris。

另一个好处是你不需要像使用rxtx那样安装DLL,并且它似乎没有rxtx有时在Windows上有一定的100%CPU吃错误。