我首先尝试使用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 - 用于检查读写的示例代码
如果您遇到类似我的类似问题,请告诉我。
感谢任何帮助!
谢谢, Ĵ
答案 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吃错误。