0

我有一个程序(在 ubuntu 机器上带有 rxtx 的 jruby),它打开了 2 个单独的串行端口。是否可以将它们都连接到一个硬件端口,即 ttyUSB0,或者连接到一个虚拟串行端口(我有一个程序来模拟硬件)?

是否有类似软件中继器/集线器来连接 2 个串行端口?我检查了socat,但这个只连接了2个末端。我已经阅读了 vde2提示和 slip/slattach 的提示,但找不到解决方案。

没有socat专家吗?

4

1 回答 1

0

我最终只能通过 java 类中的端口所有权来解决这个问题。socat 没办法,我认为是因为框架问题。

我创建了一个所有权处理程序,如

管理串行端口所有权(在 rxtx 中)

在 jruby 中它看起来像

class SerialOwnershipHandler
include CommPortOwnershipListener

def initialize serial_port
  @serial_port = serial_port
  @id = serial_port.id
  @port_name = serial_port.port_name
end

def ownershipChange type
  case type
    when CommPortOwnershipListener::PORT_OWNED
      p @id.to_s + "  OwnershipListener: got the port for " + @port_name.to_s
      #break
    when CommPortOwnershipListener::PORT_UNOWNED
      p @id.to_s + "  OwnershipListener: just lost it's port ownership for " + @port_name.to_s
      #break
    when CommPortOwnershipListener::PORT_OWNERSHIP_REQUESTED
      p @id.to_s + "  OwnershipListener: someone is asking port ownership for " + @port_name.to_s
      @serial_port.close
      #break
  end
end...

在我调用的串行端口类初始化方法中

    @serial_ownership_handler = SerialOwnershipHandler.new self  ## implements CommPortOwnershipListener
    @port_id.add_port_ownership_listener @serial_ownership_handler

唯一的缺点。您不能有多个开放线路。在打开另一个连接(请求端口的那个)之前,您必须始终关闭一个连接

于 2013-04-08T08:44:33.657 回答