0

我用 Java 编写了一个小程序,它从串行端口读取信息(一些文本消息和一些二进制数据,混合),然后通过 TCP 套接字发送。

起初我试图将数据放入缓冲区,并在“/n”到达时发送所有内容,但二进制数据不能那样工作。

我的第二个想法是一直按字节发送数据。但是它变得太慢了,我想我在发送数据时会丢失数据,即使我认为我使用了线程。

下一个想法是当我存储达到 100 个字节时发送数据,但这是一个肮脏的修复。

我的串行数据来自 GPS 接收器,这些设备通常每秒发送许多句数据(文本和二进制)(或可配置为 10、50、100Hz,取决于型号)。无论如何,接收数据存在时间间隔,而没有接收到数据的时间间隔则相当大。我想摆脱我的数据的最奇特的方法是检测该间隙并发送所有存储的数据,然后在间隙结束时新数据到达之前。

我怎么能检测到这种事件?

编辑:我使用 RXTX 包来摆脱串口,我正在使用 Windows 7 64bits

4

2 回答 2

1

要检测间隙,只需使用 enableReceiveTimeout 启用超时。

于 2012-09-10T10:43:19.657 回答
0

只需读取和写入 byte[] 缓冲区,确保只写入 read() 方法返回的实际计数。

于 2012-09-10T11:34:31.223 回答