0

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

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

4

3 回答 3

1

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

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

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

于 2017-09-06T23:02:57.647 回答
1

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

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

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

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

使用库的目的是让您可以获取和设置所需的确切设置,以便通过端口进行适当的对话。

至于 JSSC/RXTX 没有InputStream/ OutputStream,我也不喜欢那些库,所以我写了自己的.

于 2017-09-07T02:07:40.270 回答
0

以下是我们为什么会考虑使用库的快速列表,但主要是我觉得如果我们正在制作商业产品,而不是现成的库可能是不错的选择,否则作为学习者,我们可以编写自己的。

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