我有一个程序(jruby与ubuntu-machine上的rxtx)打开2个单独的串口。是否可以将它们连接到一个硬件端口,即ttyUSB0,或者连接到虚拟串行端口(我有一个模拟硬件的程序)?
是否有类似软件转发器/集线器的连接2个串口?我检查了socat,但是这个只连接了两个端点。我已阅读hint for vde2和hint for slip/slattach,但无法找到解决方案。
那里没有社会专家吗?
答案 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(请求端口的那个)之前,你必须始终关闭一个连接