我们使用通过串口管理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进行串口通信,并找到了我可以在我的场景中应用的解决方案?
非常感谢
菲尔
答案 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上不是问题 - 奇怪。
菲尔