2012-09-10 43 views
0

我写了一个Java程序,它从串口读取信息(一些文本消息和一些二进制数据,混合),然后通过TCP套接字发送。重定向串口输出到插座

起初我试图将数据放入缓冲区,并在'/ n'到达时发送所有内容,但二进制数据不能以这种方式工作。

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

下一个想法是当我存储100个字节时发送数据,但它是一个肮脏的修复。我的串行数据来自GPS接收器,这些设备通常每秒钟发送很多句子(文本和二进制数据)(或可配置为10,50,100Hz,取决于型号)。无论如何,收到数据的时间是空白的,而且在没有收到任何数据时,时间差距会更大。我想最奇妙的方式来摆脱我的数据将检测到的差距,并发送所有存储的数据,然后在新的数据到达时,间隙结束。

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

编辑:我使用RXTX包摆脱串口,和我工作过的Windows 7 64位

+0

你用什么软件包访问串口?在哪个平台上? –

+0

@AlexeiKaigorodov刚刚用该信息编辑 –

回答

1

要detegt的差距,只是让暂停时以enableReceiveTimeout。

0

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