Tag: rxtx

RXTX的稳定替代品

在将RXTX用于许多不同的项目之后,我遇到了很多令人讨厌的差异和问题,这些问题只能被明显地归结为库中的错误 – 防止RXTX库中的死锁,竞赛危险和监视器线程被打开, (即使我使用的所有端口已经closures了!)运行最新的“unstable”版本已经有所帮助了,但离我称之为可靠的地方还有很远的距离,并且项目的活动似乎还很低现在。 但是,寻找RXTX的免费跨平台替代品似乎并没有多less其他function。 有没有人试过更多运气的图书馆? 我不需要并行端口支持,只需串行,并且不一定要与RXTX或javax.comm API兼容。

java.lang.UnsatisfiedLinkError:java.library.path中没有rxtxSerial

我正在尝试使用64位Windows 7和Eclipse的64位rxtx串行通信库(从cloudhopper下载)。 我收到消息: java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path 。 这些DLL在/jre/lib目录以及Windows/System32 。 RXTXcomm.jar位于eclipse的构buildpath以及jre/lib/ext目录中。 我在后台运行进程监视器,看到RXTXcomm.jar , rxtxSerial.dll和rxtxParallel.dll都被find​​并已被打开,所以我不清楚为什么会出现这个问题。 有什么build议么。

Java InputStream阻塞读取

根据java api, InputStream.read()被描述为: 如果由于到达stream的末尾而没有字节可用,则返回值-1。 此方法阻塞,直到input数据可用,stream的末尾被检测到,或抛出exception。 我有一个while(true)循环做一个读取,我总是得到-1,当没有什么是通过stream发送。 这是预料之中的。 我的问题是什么时候会读()永远阻止? 因为如果它没有得到任何数据,它将返回-1。 我希望阻塞读取等待,直到收到数据。 如果你已经到达了inputstream的末尾,不应该只读()只是等待数据而不是返回-1? 或者如果有另一个线程访问stream,并且你的read()不能访问这个stream,那么read()只会被阻塞吗? 这导致我的下一个问题。 我曾经有事件监听器(由我的库提供)在数据可用时通知我。 当我被通知时,我会调用while((aByte = read()) > -1)存储字节。 当我在非常接近的时间里得到两个事件时,我感到困惑,并不是所有的数据都被显示出来。 似乎只显示第二个事件数据的尾部,剩下的部分不见了。 我最终改变了我的代码,所以当我得到一个事件时,我会调用if(inputStream.available() > 0) while((aByte = read()) > -1)存储字节。 现在它工作正常,我的所有数据都显示出来了。 有人可以解释这种行为吗? 据说InputStream.available()返回阻塞下一个(stream的)调用者之前可以读取的字节数。 即使我不使用.available()我会期望读取的第一个事件只是阻止读取的第二个事件,但不抹去或消耗太多的stream数据。 为什么这样做会导致不能显示所有的数据?