我正在开发一个工作项目,它打开4个串口并最初将每个端口分配给一个新的(相同的)对象(tab)。这些选项卡中的每一个都可以关闭其各自的端口,并可以通过下拉框中的选择打开任何空闲端口,使用单选按钮设置参数,然后打开所选的空闲端口。一旦端口打开,用户可以单击选择的按钮并沿端口发送二进制字符串。这不是我的问题。这是我的工作,仅包括我的问题的背景和框架。
我的问题是关于rxtxSerial.dll库。我已经尝试了这个文件的几个版本(2.1-7,2.2-3,2.2-4等)和相应的RXTXcomm.jar文件,它在我的测试计算机上运行(它只有两个可用的串口)但是当我运行时它在带有四个串口的计算机上我收到此错误消息:
问题签名:
问题事件名称:BEX
应用程序名称:java.exe
应用版本:7.0.510.13
申请时间戳:52b26621
故障模块名称: rxtxSerial.dll
故障模块版本:0.0.0.0
故障模块时间戳:4c2d952a
例外抵消:00007ef2
例外代码:c0000417
例外数据:00000000
操作系统版本:6.1.7600.2.0.0.256.48
地区ID:1033
附加信息1:5844
附加信息2:584492d8ff48ad655801e1ea86dce8ff
附加信息3:c3f6
附加信息4:c3f694d7fdd57adf7aa97e597a203712
我的问题是:是否有人遇到此错误并找到了修复方法?我使用的是32位版本的RXTXcomm,Java 1.7(x86)和Windows 7操作系统。我试图把它放在项目的运行目录中,以及'C:\ Program Files(x86)\ Java \ jre7 \ bin'。如果那是问题我会得到一个链接器错误(我以前修复过)。
更新1
我找到了一种方法来完成这项工作。我所做的是使用rxtx版本2.1-7作为jar和.dll。我修复它的方法是在输入/输出流关闭的位置和串口本身关闭的位置之间添加了一个Thread.sleep(3000)。问题是它们在串口关闭之前没有完全关闭。现在问题是rxtx函数'isCurrentlyOwned()'总是返回false。
更新2
我在Bart Prokop在github上修复的rxtx库中找到了我需要的答案:https://github.com/bartprokop/rxtx。这个库可以满足我的所有需求。我使用它的方式是使用rxtx 2.1-7 jar而不是我下载了这个项目并将gnu文件夹粘贴到我项目的主目录中,并将其用作源而不是jar文件。此外,在旁注中,当与用户交谈时,我被告知他将在大约三周内发布稳定版本。
答案 0 :(得分:0)
我遇到了同样的问题并发布在RxTx邮件列表中。这是一个尚未修复的严重错误。这些库暂时没有更新。您最好的选择是切换到PJC。许多人报告了PJC的好处。见https://github.com/nyholku/purejavacomm和http://www.sparetimelabs.com/purejavacomm/purejavacomm.php 创作者非常敏感且乐于助人。