将两个串行端口实例从(ruby)程序连接到物理串行端口(usb0)

时间:2013-01-30 12:27:18

标签: linux serial-port jruby

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

是否有类似软件转发器/集线器的连接2个串口?我检查了socat,但是这个只连接了两个端点。我已阅读hint for vde2hint for slip/slattach,但无法找到解决方案。

那里没有社会专家吗?

1 个答案:

答案 0 :(得分:0)

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

我在

中创建了一个所有权处理程序

Managing Serial Port Ownership (in 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
只有缺点。你不能有多个开放线。在打开anohter one(请求端口的那个)之前,你必须始终关闭一个连接