如何让Java在Linux中使用串口?

时间:2009-03-12 13:10:19

标签: java linux serial-port

我们使用通过串口管理pinpad的java应用程序。 这适用于带有Sun Comm.jar的窗口,提供的dll和属性文件。

现在我们正在尝试在Linux上使用这个解决方案(实际上它确实在该领域的各种其他版本的Linux上运行) - 使用Ubuntu服务器模式。

经过多次尝试 - 血液,汗水和几乎眼泪,我们有这种情况:

Java版本1.4.2_17 Linux - Ubuntu Comm libs - 由sun提供的Comm3,默认驱动程序为

外部comm测试显示comm端口:/ dev / ttyS0和/ dev / ttyS1 但java应用程序说无法打开端口/ dev / ttyS1

(使用RXRT文件产生无效的端口错误)

有没有人能够在linux上使用java 1.4.2进行串口通信,并找到了我可以在我的场景中应用的解决方案?

非常感谢

菲尔

5 个答案:

答案 0 :(得分:3)

我知道这是一个老问题,但我创建了一个Java包和本机库,允许串口读写,目前仅处于同步模式。

它是开源的,可以在GitHub上找到:

j232 - Java源代码

libj232 - j232的原生图书馆。

维基页面为here

请注意,这是一个仅限Linux的软件包和库。

答案 1 :(得分:2)

确保您使用具有访问串行端口权限的用户。某些发行版将串行端口放在uucp组中,因此请确保该用户属于该组。

答案 2 :(得分:1)

我已经做了一段时间了。我记得你不能只将/ dev / ttyS0作为文件和I / O打开。

我记得在Sun IO罐中遇到同样的问题。

我记得解决的解决方案是在C中创建一个小的命令行程序,它将stdin回显到串口和串口到stdout。然后,我从我的java进程启动了这个程序。我没有代码,但网上有很多关于写入linux串口的c程序的例子。

答案 3 :(得分:1)

我们多年来一直在Windows和Linux上使用SerialIO库进行Java串行通信,效果很好(不,我不适合他们: - )):

http://serialio.com/products/serialport/serialport.php

库不会自动检测Linux上的可用串行端口 - 您必须手动配置它们。

答案 4 :(得分:0)

我们变化不大, 使用的库中没有任何内容。 但是在串口对象上删除了EventListener的使用修复了问题。

这实际上允许我们的代码在linux上运行(jre1.4.2,slackware和Suns Comm3驱动程序),这在Windows上不是问题 - 奇怪。

菲尔