Java串行端口库对设备的普通IO有什么好处?

时间:2017-09-06 22:50:16

标签: java serial-port rxtx jssc

有很多关于Java串口库(如RXTX和JSSC)的讨论,但它们真正提供了什么?在linux和windows中你都可以简单地打开串口就像一个文件进行读写,不是吗?使用库而不是仅使用文件IO从设备读取和写入有什么好处?

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

3 个答案:

答案 0 :(得分:1)

历史上,串行端口专为调制解调器等慢速通信线路而设计。它们具有“清除发送”,“请求发送”,“数据终端就绪”,“挂断”,“振铃”等附加信号。某些串行设备仍然使用这些信号。这些东西仍然存在于硬件中,因此串行库应提供访问它的API。

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

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

答案 1 :(得分:1)

  

在linux和windows中你只需打开串口就像一个文件进行读写,不是吗?

虽然这是可行的,但实际上并不是推荐的方法。转到第二点:

  

但假设已经配置了端口,是否有任何理由使用这些库?

假设端口已正确配置和配置,那么完全可以简单地打开串口并像普通文件一样读写。这确实带来了另一个警告:如果您完全依赖控制信号,您将无法从端口获取该数据。我使用过的大多数串行设备都没有对控制线做任何事情,但这并不是你总能确定的。

使用库的重点是,您可以获取并设置所需的确切设置,以便通过端口进行适当的交谈。

至于JSSC / RXTX对他们没有InputStream / OutputStream,我也不喜欢那些库,所以我wrote my own

答案 2 :(得分:0)

下面是我们考虑图书馆的原因的快速列表,但在很大程度上我觉得如果我们制作商业产品而不是现成的图书馆可能是个不错的选择,否则作为一个学习者我们可以写自己的。

  1. 各种操作系统的一致性。我们必须为所有支持的操作系统编写代码,这本身就是一项任务。
  2. 图书馆作者可能在该特定主题上有更多经验,因此质量可能比我们更好。
  3. 完成项目的时间(上市时间)是另一个因素。
  4. 综合测试套件
  5. 超越简单的读/写可以是额外的功能,特别是在热插拔和视觉指示等GUI驱动产品的情况下。
  6. 库可能实现协议或规范意味着简单的读/写可能会包含在流中,其中隐藏了串行端口特定的东西,并且应用程序会公开统一的层。
  7. 支持更广泛的硬件设备,尤其是USB-UART 看看这两个开源库https://laravel.com/docs/5.5/eloquent-relationships#one-to-one1st library
  8. 支持嵌入式和桌面操作系统