问题标签 [rxtx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1432 浏览

linux - 我应该在哪个线程处理 RxTx SerialEvent.DATA_AVAILABLE 事件?

我在 Linux 发行版上通过 usbserial 使用 RxTx 库。RxTx 库的行为似乎与它在串行上的工作方式完全不同(以一种糟糕的方式)。

我的应用程序有多个线程,我最大的问题之一是,我的流中似乎突然多了一到两个字节。我无法弄清楚它们来自哪里或为什么。当我使用另一个线程写入 RxTx 流时,这个问题似乎更频繁地发生。

所以我想知道是否应该在当前的 RxTx 线程上处理读取,或者当我收到 DATA_AVAILABLE 事件时是否应该在另一个线程上处理读取。

我希望有人可能有好的或坏的理由这样做。

0 投票
2 回答
3349 浏览

linux - 使用usbserial在RxTx上写入数据?

我在 Linux 发行版上通过 usbserial 使用 RxTx 库。RxTx 库的行为似乎与它在串行上的工作方式完全不同(以一种糟糕的方式)。

我最大的问题之一是RxTx SerialPortEvent.OUTPUT_BUFFER_EMPTY无法通过 USB 串行在 linux 上运行。

我怎么知道什么时候应该写入流?我可能错过的任何指标?

到目前为止,我同时写作和阅读的经验并不是很好。有谁知道我是否应该DATA_AVAILABLE在我写流时锁定处理程序不被调用?或者RxTx接受并发读/写?

0 投票
10 回答
22707 浏览

java - 在 Windows 上使用 RXTX Java 库的 NoSuchPortException?

我已按照http://www.jcontrol.org/download/readme_rxtx_en.html的说明在 Windows 上设置 rxtx 。

我所做的就是将 rxtxSerial.dll 复制到“C:\Program Files\Java\jdk1.6.0_07\jre\bin”,并将 RXTXcomm.jar 复制到“C:\Program Files\Java\jdk1.6.0_07\jre\ lib\ext"(我的 JAVA_HOME 变量设置为 C:\Program Files\Java\jdk1.6.0_07\jre)

我还将 RXTXcomm.jar 添加到我的 Eclipse 项目中。

但是当我运行它时,它仍然显示“NoSuchPortException”

在我的 java 文件中,我告诉它:

我也尝试过 Java Comm API。两者都无法识别我的串行端口,但我确信我正确地遵循了说明。那里有文件。

有人知道它可能是什么吗?

0 投票
2 回答
2644 浏览

java - 不满意的链接:SolarisParallel using rxtx to replace java comm api in Windows XP

我正在尝试使用 rxtx 2.0 jars 和 dll 在 windows xp 中使用 java comm api,我将 RXTXcomm.jar 复制到 jre\ext 和 rxtxSerial.dll 和 rxtxParallel.dll 到 jre\bin

当我运行程序时,出现以下错误:

加载 SolarisSerial 时出错:java.lang.UnsatisfiedLinkError: no SolarisSerialParallel in java.library.path 捕获 java.lang.UnsatisfiedLinkError: com.sun.comm.SolarisDriver.readRegistrySerial(Ljava/util/Vector;Ljava/lang/String;)加载驱动程序 com.sun.comm.SolarisDriver

为什么它试图加载solaris驱动程序?提前致谢

0 投票
7 回答
100490 浏览

java - Java InputStream 阻塞读取

根据java api,InputStream.read()描述为:

如果由于到达流的末尾而没有可用的字节,则返回值 -1。此方法会一直阻塞,直到输入数据可用、检测到流结束或引发异常。

我有一个while(true)循环进行读取,当没有任何内容通过流发送时,我总是得到-1。这是预期的。

我的问题是 read() 什么时候会阻塞?因为如果它没有得到任何数据,它会返回-1。我希望阻塞读取要等到收到数据。如果您已经到达输入流的末尾,那么 read() 不应该只是等待数据而不是返回 -1 吗?

或者 read() 只有在有另一个线程访问流并且您的 read() 无法访问流时才会阻塞?


这引出了我的下一个问题。我曾经有事件监听器(由我的库提供),它会在数据可用时通知我。当我收到通知时,我会调用while((aByte = read()) > -1)存储字节。当我在非常接近的时间内获得两个事件并且并未显示我的所有数据时,我感到很困惑。似乎只显示了第二个事件数据的尾部,其余的都丢失了。

我最终更改了我的代码,以便当我收到一个事件时,我调用if(inputStream.available() > 0) while((aByte = read()) > -1)了存储字节。现在它工作正常,我的所有数据都显示出来了。

有人可以解释这种行为吗?据说InputStream.available()返回在阻塞下一个调用者(流的?)之前可以读取的字节数。即使我不使用 .available() 我希望读取第一个事件只会阻止读取第二个事件,但不会擦除或消耗太多流数据。为什么这样做会导致无法显示我的所有数据?

0 投票
5 回答
11060 浏览

java - 在 Java 小程序中动态加载本机库

我正在尝试编写一个将从用户的串行端口读取的 Java 小程序。为此,我将Java Comm APIRXTX 库结合使用。我已经成功地设法通过本地 Java 应用程序读取数据,但我似乎无法从小程序中执行相同的操作。问题是 RXTX 库是一个本地库,我还没有找到在 Java 小程序中加载这个库的方法。我发现了两篇有趣的文章(Using JNI in Applets其中引用了这篇文章),但都已有 10 多年的历史,我想知道是否有更新的解决方案。或者,如果您可以提出替代方案,我很想听听!

0 投票
1 回答
1660 浏览

java - 为什么 SerialEvent.RI 不起作用?

我有两台计算机运行此代码:

这不是最终版本,我只是看看它是如何工作的。问题是,当我使用此代码拨打电话号码时,例如我的手机,它可以工作,但反过来就不行;也就是说,从我的号码呼叫并将程序作为听众。我也试过两台电脑,他们都没有接到另一端的电话。难道我做错了什么?我将不胜感激任何帮助。

0 投票
3 回答
3752 浏览

java - rxtx 通讯端口

我正在使用 rxtx api 通过 com 端口从 GPS 设备读取数据。现在我通过读取配置文件并查找列出的端口来找到正确的 com 端口。我遇到的问题是,如果拔下设备,com 端口可能会改变,那么用户必须知道更改配置文件。我在 c# 中编写了一个与此类似的应用程序,并且能够列出 windows 设备名称而不是 com 端口,并且我循环浏览了 com 端口,直到设备名称与配置文件中的名称匹配。使用该方法,即使正在使用的 com 端口发生更改,配置文件中的任何内容也不必更改。有没有办法用 rxtx api 做到这一点?

提前致谢!

0 投票
1 回答
8423 浏览

java - 串行端口未关闭。我想释放 COM 端口

串行端口未关闭。我想释放COM端口...

下面是我的代码....

0 投票
6 回答
21143 浏览

java - RXTX 接收问题

我已经使用 RXTX 大约一年了,没有太多问题。我刚刚启动了一个新程序来与一个新硬件进行交互,所以我重用了我在其他项目中使用过的 connect() 方法,但是我遇到了一个我以前从未见过的奇怪问题。

问题

该设备工作正常,因为当我与超级终端连接时,我发送并接收我期望的东西,而串行端口监视器(SPM) 反映了这一点。

但是,当我运行我编写的用于诊断我的主应用程序问题的简单超级终端克隆时,根据 SPM,发送了字节,但没有收到任何内容,并且我的 SerialPortEventListener 永远不会触发。即使我在主循环中检查可用数据,也会reader.ready()返回false. 如果我忽略此检查,则会出现异常,详情如下。

connect() 方法的相关部分

例外

大问题(再次)

我想我已经消除了所有可能的硬件问题,那么我的代码或 RXTX 库可能有什么问题?

编辑:有趣的东西

当我从 java 发送了一堆本应得到响应的命令后打开超级终端时,所有响应都会立即出现,就好像它们已被放入缓冲区中的某个地方,但不可用。

编辑2:尝试了一些新的东西,同样的结果

我运行了此处找到的代码示例,结果相同。没有数据进来,但是当我切换到一个新程序时,它一下子就进来了。

编辑 3

硬件很好,即使是不同的计算机也有同样的问题。我没有使用任何类型的 USB 适配器。

我也开始使用PortMon,它给了我一些有趣的结果。超级终端和 RXTX 没有使用相同的设置,并且 RXTX 总是轮询端口,这与超级终端不同,但我仍然看不到什么设置会影响这一点。一旦我可以将配置与持续轮询隔离开来,我就会发布我的 PortMon 日志。

编辑 4

过去 3 个月内的某种 Windows 更新是否可能导致这种情况?它曾经把我的一个基于 MATLAB mex 的程序搞砸了。

编辑 5

我还注意到 HyperTerminal、RXTX 和我发现的与设备通信的单独程序之间有些不同(但没有做我想做的事,这就是我推出自己的程序的原因)

  • 超级终端 - 设置为无流量控制,但串行端口监视器的 RTS 和 DTR 指示灯为绿色
  • 其他程序 - 不确定它认为它正在使用什么设置,但只有 SPM 的 RTS 指示灯为绿色
  • RXTX——无论我设置什么流控,只有SPM的CTS和DTR指示灯亮。

从串行端口监视器的帮助文件(释义):