Serial port 串口通信RXTX

Serial port 串口通信RXTX,serial-port,rxtx,Serial Port,Rxtx,我正在为一个打开4个串行端口并最初将每个端口分配给一个新(相同)对象(选项卡)的项目工作。通过在下拉框中选择,使用单选按钮设置参数,每个选项卡都可以关闭各自的端口并打开任意自由端口,然后打开选定的自由端口。一旦端口打开,用户可以单击一系列按钮,并向端口发送二进制字符串。这不是我的问题。这是我一直在做的工作,只是为了我的问题的背景和框架 我的问题是关于rxtxSerial.dll库的。我已经尝试了此文件的多个版本(2.1-7、2.2-3、2.2-4等)和相应的RXTXcomm.jar文件,它在我的

我正在为一个打开4个串行端口并最初将每个端口分配给一个新(相同)对象(选项卡)的项目工作。通过在下拉框中选择,使用单选按钮设置参数,每个选项卡都可以关闭各自的端口并打开任意自由端口,然后打开选定的自由端口。一旦端口打开,用户可以单击一系列按钮,并向端口发送二进制字符串。这不是我的问题。这是我一直在做的工作,只是为了我的问题的背景和框架

我的问题是关于rxtxSerial.dll库的。我已经尝试了此文件的多个版本(2.1-7、2.2-3、2.2-4等)和相应的RXTXcomm.jar文件,它在我的测试计算机上运行(只有两个串行端口可用),但当我在有四个串行端口的计算机上运行时,会收到以下错误消息:


Java(TM)平台SE二进制文件已停止工作 问题签名:
问题事件名称: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:584492D8FF48AD655801EA86DCE8FF
附加信息3:c3f6
附加信息4:c3f694d7fdd57adf7aa97e597a203712


我的问题是:有没有人犯过这个错误并找到了解决方法?我使用的是32位版本的RXTXcomm、Java1.7(x86)和Windows7操作系统。我已尝试将其放在项目的运行目录中,以及“C:\ProgramFiles(x86)\Java\jre7\bin”中。如果这是问题所在,我将得到一个链接器错误(我在过去已经修复了)

更新1

我已经找到了一种方法来实现这一点。我所做的是将rxtx版本2.1-7用于jar和.dll。我修复它的方法是在输入/输出流关闭的位置和串行端口本身关闭的位置之间添加一个Thread.sleep(3000)。问题是,在关闭串行端口之前,它们没有完全关闭。现在我遇到的问题是rxtx函数'isCurrentlyOwned()'总是返回false

更新2


我在Bart Prokop在github上修复的rxtx库中找到了我需要的答案:。这个图书馆做了我需要的一切。我使用它的方式不是使用RXTX2.1-7JAR,而是下载了这个项目,将gnu文件夹粘贴到我的项目主目录中,并将其用作源文件而不是jar文件。另外,在与用户交谈时,我被告知他将在大约三周后发布一个稳定版本。

我也遇到了同样的问题,并将其发布在RxTx邮件列表上。这是一个尚未修复的严重错误。这些库已经有一段时间没有更新了。您最好的选择是切换到PJC。许多人向PJC报告了这些益处。看到和
创建者的响应速度非常快,而且很有帮助。

这是一个硬崩溃,是由无效的C运行时函数调用引起的。您必须使用调试器或放弃错误代码。您好,正如您提到的我的github存储库,我在不久前发布了一个RXTX版本,其中包含绑定到Maven Central的二进制文件。同时支持Windows和Linux。我强烈主张选择二进制文件,并且在大多数情况下都有效。非常感谢你给我这个链接。这个项目正是我需要它做的,解决了我所有的问题。