与设备的普通IO相比,Java串行端口库有哪些好处?

与设备的普通IO相比,Java串行端口库有哪些好处?,java,serial-port,rxtx,jssc,Java,Serial Port,Rxtx,Jssc,关于像RXTX和JSSC这样的Java串行端口库有很多讨论,但是它们真正提供了什么呢?在linux和windows中,您可以像打开文件一样打开串行端口进行读写,不是吗?与仅从带有文件IO的设备读写相比,使用库的优势是什么 我知道库允许您配置端口,这通常需要通过命令行调用来完成。但是,假设端口已经配置好,是否有理由使用这些库?历史上,串行端口是为低速通信线路(如调制解调器)设计的。它们还有“清除发送”、“请求发送”、“数据终端就绪”、“挂断”、“响铃”等附加信号。一些串行设备仍然使用这些信号。这些

关于像RXTX和JSSC这样的Java串行端口库有很多讨论,但是它们真正提供了什么呢?在linux和windows中,您可以像打开文件一样打开串行端口进行读写,不是吗?与仅从带有文件IO的设备读写相比,使用库的优势是什么


我知道库允许您配置端口,这通常需要通过命令行调用来完成。但是,假设端口已经配置好,是否有理由使用这些库?

历史上,串行端口是为低速通信线路(如调制解调器)设计的。它们还有“清除发送”、“请求发送”、“数据终端就绪”、“挂断”、“响铃”等附加信号。一些串行设备仍然使用这些信号。这些东西仍然存在于硬件中,所以串行库应该提供一个API来访问它

另一件事是中断。您可能不想一直轮询连接以查看是否有可用数据。串行API通常为此提供回调或事件处理程序


打开和关闭端口最好在应用程序中完成。严格地说,这不是必需的,但最好不要期望某个端口在启动时打开或在退出时将其锁定。

从历史上看,串行端口是为诸如调制解调器之类的慢速通信线路设计的。它们还有“清除发送”、“请求发送”、“数据终端就绪”、“挂断”、“响铃”等附加信号。一些串行设备仍然使用这些信号。这些东西仍然存在于硬件中,所以串行库应该提供一个API来访问它

另一件事是中断。您可能不想一直轮询连接以查看是否有可用数据。串行API通常为此提供回调或事件处理程序

打开和关闭端口最好在应用程序中完成。严格地说,这不是必需的,但最好不要期望某个特定端口在开始时打开,或者在出口时将其锁定

在linux和windows中,您可以像打开文件一样打开串行端口进行读写,不是吗

虽然这是可能的,但这并不是一个真正推荐的方法。转到第二点:

但是假设端口已经配置好,有什么理由使用这些库吗

假设端口配置正确,那么完全可以像普通文件一样打开串行端口并进行读写。不过,这确实带来了另一个警告:如果您完全依赖于控制信号,您将无法从端口获取数据。我使用过的大多数串行设备根本不使用控制线,但这并不是您始终可以确定的

使用库背后的要点是,您可以获得并设置通过端口适当交谈所需的确切设置

至于JSSC/RXTX没有
InputStream
/
OutputStream
,我也不喜欢那些库的这种情况,所以我选择了

在linux和windows中,您可以像打开文件一样打开串行端口进行读写,不是吗

虽然这是可能的,但这并不是一个真正推荐的方法。转到第二点:

但是假设端口已经配置好,有什么理由使用这些库吗

假设端口配置正确,那么完全可以像普通文件一样打开串行端口并进行读写。不过,这确实带来了另一个警告:如果您完全依赖于控制信号,您将无法从端口获取数据。我使用过的大多数串行设备根本不使用控制线,但这并不是您始终可以确定的

使用库背后的要点是,您可以获得并设置通过端口适当交谈所需的确切设置


至于JSSC/RXTX没有
InputStream
/
OutputStream
,我也不喜欢那些库的这种情况,所以,我。

< P>下面是一个为什么我们可以考虑图书馆的快速清单,但我觉得如果我们做一个商业产品比准备好的图书馆可能是一个不错的选择,否则作为一个学习者,我们可以自己写。
  • 跨各种操作系统的一致性。我们必须为所有受支持的操作系统编写代码,这本身就是一项任务
  • 图书馆的作者可能在这个特定的主题上有更多的经验,所以质量可能比我们更好
  • 完成项目的时间(上市时间)是另一个因素
  • 综合测试套件
  • 除了简单的读/写之外,还可以提供额外的功能,特别是在GUI驱动的产品中,如热插拔和可视指示等
  • 库可能会实现协议或规范,这意味着简单的读/写可能会被封装在流中,在流中隐藏特定于串行端口的内容,并向应用程序公开一个统一的层
  • 支持更广泛的硬件设备esp USB-UART 看看这两个开源库和
  • 支持嵌入式和桌面操作系统

  • 下面是我们为什么会考虑图书馆的一个简单清单,但我觉得如果我们做一个商业产品比准备好的图书馆更好,那么作为一个学习者我们可以自己写。
  • 跨各种操作系统的一致性。我们必须为所有受支持的操作系统编写代码,这本身就是一项任务
  • 图书馆的作者可能在这个特定的主题上有更多的经验,所以质量可能比我们更好
  • 完成项目的时间(上市时间)是另一个因素
  • 综合测试套件
  • 超越简单的读/写ca