如何让Java在Linux中使用串行端口?
我们使用一个java应用程序,该应用程序通过串行端口管理pinpad。 这在带有Sun Comm.jar、提供的dll和属性文件的windows上非常有效 现在,我们正试图在Linux上使用这个解决方案(实际上,它确实运行在各种其他风格的Linux上),使用Ubuntu服务器模式 经过多次尝试——流血、汗水和几乎是眼泪——我们有了这样一个场景: Java版本1.4.2_17 Linux-Ubuntu Comm libs—sun提供的Comm3,指定了默认驱动程序 外部通信测试显示通信端口:/dev/ttyS0和/dev/ttyS1 但是java应用程序表示无法打开端口/dev/ttyS1 (使用RXRT文件会产生无效端口错误) 是否有人能够在linux上使用java 1.4.2进行串行端口通信,并找到了一个可以应用于我的场景的解决方案 非常感谢如何让Java在Linux中使用串行端口?,java,linux,serial-port,Java,Linux,Serial Port,我们使用一个java应用程序,该应用程序通过串行端口管理pinpad。 这在带有Sun Comm.jar、提供的dll和属性文件的windows上非常有效 现在,我们正试图在Linux上使用这个解决方案(实际上,它确实运行在各种其他风格的Linux上),使用Ubuntu服务器模式 经过多次尝试——流血、汗水和几乎是眼泪——我们有了这样一个场景: Java版本1.4.2_17 Linux-Ubuntu Comm libs—sun提供的Comm3,指定了默认驱动程序 外部通信测试显示通信端口:/de
Phill我已经有一段时间没有这样做了。我记得,您不能将/dev/ttyS0作为文件打开并对其进行I/O操作 我记得Sun IO罐子也有同样的问题
我记得解决方案是用C语言创建一个小的命令行程序,将stdin回送到串口,将串口回送到stdout。然后,我从java进程启动了这个程序。我没有代码,但是web上有很多c程序写入linux串行端口的示例。请确保您使用的是具有访问串行端口权限的用户。一些发行版将串行端口放在uucp组中,因此请确保用户属于该组。我们已经在Windows和Linux上使用SerialIO库进行Java串行通信好几年了,取得了很好的效果(不,我不为他们工作:-): 这些库不会自动检测Linux上可用的串行端口-您必须手动配置它们。我们没有做太多更改, 图书馆里什么都没有。 但是在串行端口对象上删除EventListener的使用修复了这个问题 这实际上允许我们的代码在linux(jre1.4.2、slackware和Sun Comm3驱动程序)上运行,而在windows上这并不是问题——奇怪
Phill我知道这是一个老问题,但我已经创建了一个Java包和本机库,允许串行端口读写,目前仅在同步模式下 它是开源的,可在GitHub上获得: -Java源代码 -j232的本机库 wiki页面是
请注意,这是一个仅限Linux的软件包和库。您确定java进程具有打开/dev/ttyS[01]的权限吗?错误是什么?我同意尤金的观点,这可能是解决这个问题的唯一办法?我也有同样的错误。嗯,我已经为在这方面寻求帮助的新西兰人提供了一个解决方案。但我需要等到明天(11小时前),看看他们是否有进展。然后我会把我的发现放在这里。谢谢manHi tony,我正在尝试在Ubuntu中配置SerialIO。我为我的ubuntu 64位正确加载了本机库,但当我尝试打开一个端口时,我得到javax.comm.NoSuchPortException:/dev/ttyUSB0:在端口列表中找不到。但该设备就在那里,其他任何应用程序都不会使用它。任何帮助都将不胜感激。也许我可以提出一个你能回答的问题?谢谢@戴维霍夫曼,噢。。。我已经有好几年没有做过这些了-我甚至不确定我是否还有代码:-(。我确实记得那个问题,我想我必须手动将/dev/tty/USB0:添加到一个配置文件中,我认为它将USB端口映射到了一个串行端口。恐怕帮不了什么忙:-(。我会四处寻找,看看是否能找到原始代码。