请注意:虽然我使用的库称为Java Simple Serial Connector,但这个问题实际上更多是关于一般的针对串行端口的 Java 编码,以及与此相关的任何策略。
我正在使用 Java 库(如上所述的 JSSC)从串行端口读取数据。该库要求您轮询端口以获取所有可用字节。但这让我担心,因为在 2 次不同的轮询尝试之间,数据可能会流式传输到端口(从串行设备),因此可能会“丢失”。
除非硬件层有某种缓冲/缓存机制来缓冲进入串行端口的数据。在这种情况下,库的 API 是有意义的,因为它可能会查询缓冲区并读取在其中排队的任何内容。所以我问:
- 有这样的“串口缓冲区”吗?如果是这样,那是什么?如果没有,那么是否有任何“无损”串口读取策略?
- 如果有这样的缓冲区,它是如何工作的?当它充满时会发生什么?
- 我正在使用的 Java 库将串行端口数据读取为
byte[]
's;ByteArrayInputStream
然后从这些构造 a 有意义byte[]
吗?这样做会有什么好处?