Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Java在Linux中使用串行端口?_Java_Linux_Serial Port - Fatal编程技术网

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

如何让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

我们使用一个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进行串行端口通信,并找到了一个可以应用于我的场景的解决方案

非常感谢


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端口映射到了一个串行端口。恐怕帮不了什么忙:-(。我会四处寻找,看看是否能找到原始代码。