【问题标题】:Redirect serial port output to a socket将串口输出重定向到套接字
【发布时间】:2012-09-10 10:09:33
【问题描述】:

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

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

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

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

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

我怎样才能检测到这种事件?

编辑:我使用 RXTX 包来摆脱串行端口,并且我正在使用 Windows 7 64 位

【问题讨论】:

  • 你用什么包来访问串口?在哪个平台上?
  • @AlexeiKaigorodov 刚刚使用该信息进行了编辑

标签: java serial-port byte


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多