关于 RXTX 和 JSSC 等 Java 串口库的讨论很多,但它们真正提供了什么?在linux和windows中,您都可以像打开文件一样简单地打开串口进行读写,不是吗?与仅使用文件 IO 从设备读取和写入相比,使用库有什么优势?
我了解这些库允许您配置端口,这通常需要通过命令行调用来完成。但是假设端口已经配置好了,有什么理由使用这些库吗?
关于 RXTX 和 JSSC 等 Java 串口库的讨论很多,但它们真正提供了什么?在linux和windows中,您都可以像打开文件一样简单地打开串口进行读写,不是吗?与仅使用文件 IO 从设备读取和写入相比,使用库有什么优势?
我了解这些库允许您配置端口,这通常需要通过命令行调用来完成。但是假设端口已经配置好了,有什么理由使用这些库吗?
从历史上看,串行端口是为调制解调器等慢速通信线路设计的。它们有“清除发送”、“请求发送”、“数据终端就绪”、“挂断”、“响铃”等附加信号。一些串行设备仍在使用这些信号。这些东西仍然存在于硬件中,所以串行库应该提供一个 API 来访问它。
另一件事是中断。您可能不想一直轮询连接以查看是否有可用数据。串行 API 通常为此提供回调或事件处理程序。
打开和关闭端口最好在应用程序中完成。严格来说,这不是必需的,但最好不要期望特定端口在开始时打开或在退出时将其锁定。
在linux和windows中,您都可以像打开文件一样简单地打开串口进行读写,不是吗?
虽然这是可能的,但这并不是真正推荐的方法。转到您的第二点:
但是假设端口已经配置好了,有什么理由使用这些库吗?
假设端口配置和配置正确,那么完全可以简单地打开串口并像普通文件一样读写它。不过,这确实带来了另一个警告:如果您完全依赖控制信号,您将无法从端口获取该数据。我使用过的大多数串行设备根本不会对控制线做任何事情,但这并不是你总能确定的。
使用库的目的是让您可以获取和设置所需的确切设置,以便通过端口进行适当的对话。
至于 JSSC/RXTX 没有InputStream
/ OutputStream
,我也不喜欢那些库,所以我写了自己的.
以下是我们为什么会考虑使用库的快速列表,但主要是我觉得如果我们正在制作商业产品,而不是现成的库可能是不错的选择,否则作为学习者,我们可以编写自己的。