我有一个程序(在 ubuntu 机器上带有 rxtx 的 jruby),它打开了 2 个单独的串行端口。是否可以将它们都连接到一个硬件端口,即 ttyUSB0,或者连接到一个虚拟串行端口(我有一个程序来模拟硬件)?
是否有类似软件中继器/集线器来连接 2 个串行端口?我检查了socat,但这个只连接了2个末端。我已经阅读了 vde2的提示和 slip/slattach 的提示,但找不到解决方案。
没有socat专家吗?
我有一个程序(在 ubuntu 机器上带有 rxtx 的 jruby),它打开了 2 个单独的串行端口。是否可以将它们都连接到一个硬件端口,即 ttyUSB0,或者连接到一个虚拟串行端口(我有一个程序来模拟硬件)?
是否有类似软件中继器/集线器来连接 2 个串行端口?我检查了socat,但这个只连接了2个末端。我已经阅读了 vde2的提示和 slip/slattach 的提示,但找不到解决方案。
没有socat专家吗?
我最终只能通过 java 类中的端口所有权来解决这个问题。socat 没办法,我认为是因为框架问题。
我创建了一个所有权处理程序,如
在 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
唯一的缺点。您不能有多个开放线路。在打开另一个连接(请求端口的那个)之前,您必须始终关闭一个连接