将串口输出重定向到套接字

时间:2012-09-10 10:09:34

标签: java serial-port byte

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

起初我尝试将数据放入缓冲区,并在'/ n'到达时发送所有内容,但二进制数据无法正常工作。

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

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

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

我怎么能发现这种事件?

编辑:我使用RXTX软件包摆脱串口,我正在使用Windows 7 64位

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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